3

関数を構成するのと同じように、Function と Consumer を構成できないのはなぜですか?

Function<Integer, String> a = Object::toString;
Consumer<String> b = x -> System.out.println(x);
Consumer<Integer> composed = a.andThen(b);

これは、既存の Function インターフェースに対する明らかな即興のようです。Java 8 でこの機能が回避された理由はありますか?

また、次のように関数の拡張実装を使用するのは一般的な方法ですか?

interface FunctionImproved<T, R> extends Function<T, R> {
    default Consumer<T> andThen(Consumer<R> consumer) {
        return x -> consumer.accept(apply(x));
    }
}
4

4 に答える 4