Conversión de consumidores a funciones
Muchas lambdas para elFunction
la interfaz toma la forma
t -> {
// do something to t
return t;
}
Hago esto tan a menudo que he escrito un método como este.
static <T> Function<T, T> consumeThenReturn(Consumer<T> consumer) {
return t -> {
consumer.accept(t);
return t;
};
}
Esto me permite hacer cosas realmente bonitas como esta:
IntStream.rangeClosed('A', 'Z')
.mapToObj(a -> (char) a)
.collect(Collectors.collectingAndThen(Collectors.toList(), consumeThenReturn(Collections::shuffle)))
.forEach(System.out::print);
¿Hay otra forma de hacer conversiones como esta sin depender de mi propio método? ¿Hay algo en las nuevas API que me haya perdido que haga que mi método sea redundante?