Nuestros mejores desarrolladores han agotado sus depósitos de café, buscando noche y día por la solución, hasta que Lola encontró la contestación en Beanstalk así que en este momento la comparte aquí.
Solución:
anyOf
tiene que decirle de alguna manera cuál fue el resultado de la específica CompletableFuture
cuya finalización desencadenó anyOf
. Eso no es necesario en caso de allOf
porque sabes qué futuros se completaron, todos ellos.
allOf
(Tal como anyOf
) no requiere que todos los futuros tengan el mismo tipo. Entonces, si fuera a devolver un futuro de colección, tendría que ser una colección de Object
que probablemente no es lo que quieres de todos modos.
Si realmente quieres tener allOf
devolver un futuro de la colección, es bastante sencillo escribir el tuyo propio:
public static CompletableFuture> myAllOf(CompletableFuture>... futures)
return CompletableFuture.allOf(futures)
.thenApply(x -> Arrays.stream(futures)
.map(f -> (Object) f.join())
.collect(toList())
);
Si tiene una versión de tipo seguro de este problema y necesita convertir una colección de futuros de cierto tipo en una colección futura de ese mismo tipo, consulte esta pregunta para ver varios ejemplos: Lista secuencia
Comentarios y calificaciones del post
Recuerda algo, que tienes autorización de valorar este escrito si diste con el hallazgo.