Ked*_*ade 3 java generics java-8
一种Java reduce方法Stream:
<U> U reduce(U identity,
BiFunction<U, ? super T, U> accumulator,
BinaryOperator<U> combiner);
Run Code Online (Sandbox Code Playgroud)
有助于根据流中对象的某些属性来减少流.
但是,我不清楚为什么accumulator不能更直接和服务于同一目的:
BiFunction<U, T, U> accumulator.
accumulator签名中的通配符提供了哪些额外的灵活性(以降低可读性为代价)?
为什么累加器不能更直接并且服务于相同的目的:
它可能会比需要更具限制性.如果你说的话
BiFunction<String, Object, String> accumulator = (a,b) -> a + b;
Run Code Online (Sandbox Code Playgroud)
你应该能够把它传递给
String join = strings.stream().reduce("text: ", accumulator, (a, b) -> a + b);
Run Code Online (Sandbox Code Playgroud)
要么
String join = ints.stream().reduce("long num: ", accumulator, (a, b) -> a + b);
Run Code Online (Sandbox Code Playgroud)
即你可以为两个减少编写一个累加器.