В интерфейсе Stream<T>
имеется метод перегрузки collect()
со следующей сигнатурой:
<R> R collect(Supplier<R> supplier,
BiConsumer<R,? super T> accumulator,
BiConsumer<R,R> combiner)
Существует еще одна версия collect(Collector<? super T,A,R> collector)
, которая получает объект с тремя предыдущими функциями. Свойство интерфейса Collector
, соответствующее combiner
, имеет подпись BinaryOperator<A> combiner()
.
В последнем случае Java API 8 утверждает, что:
Функция объединителя может складывать состояние из одного аргумента в другой и возвращать его или возвращать новый контейнер результатов.
Почему первый метод collect
не получает также BinaryOperator<R>
?