为什么Java 8的'Collector'类设计成这样?

10 浏览
0 Comments

为什么Java 8的'Collector'类设计成这样?

我们知道Java 8引入了一个新的Stream API,而java.util.stream.Collector是定义如何聚合/收集数据流的接口。

然而,Collector接口设计如下:

public interface Collector {
    Supplier supplier();
    BiConsumer accumulator();
    BinaryOperator combiner();
    Function finisher();
}

为什么它没有设计成以下这种形式呢?

public interface Collector {
    A supply();
    void accumulate(A accumulator, T value);
    A combine(A left, A right);
    R finish(A accumulator);
}

后者更容易实现。设计为前者的考虑是什么?

0