为什么Java 8的'Collector'类设计成这样?
- 论坛
- 为什么Java 8的'Collector'类设计成这样?
25 浏览
为什么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); }
后者更容易实现。设计为前者的考虑是什么?