为什么我们不能像组合函数一样组合函数和消费者?
Function<Integer, String> a = Object::toString;
Consumer<String> b = x -> System.out.println(x);
Consumer<Integer> composed = a.andThen(b);
这似乎是对现有 Function 接口的明显即兴创作。在 Java 8 中避免这种能力有什么原因吗?
另外,如下使用 Function 的扩展实现是一种常见的做法吗?
interface FunctionImproved<T, R> extends Function<T, R> {
default Consumer<T> andThen(Consumer<R> consumer) {
return x -> consumer.accept(apply(x));
}
}