import org.junit.Test;
import java.util.stream.IntStream;
public class GomanTest {
@Test
public void someTest() {
IntStream.of(2, 3, 1).collect(Container::new, Container::add, null);
}
}
class Container<T> {
void add(T t) {
System.out.println("this is container " + t);
}
}
输出:的Java 8 LAMBDA翻译与incompatiable参数
this is container 2
this is container 3
this is container 1
这成功地运行在1.8.0_45.jdk。 Container#add如何被转换为ObjIntConsumer#accept?
顺便说一句,我很惊讶'IntStream'接受'null'作为'collect'的最后一个参数。标准的'Stream'实现没有。 – Holger
JDK-9中的[已经修复](http://hg.openjdk.java.net/jdk9/dev/jdk/diff/013baa71b58b/src/share/classes/java/util/stream/IntPipeline.java)因此我不会这样写 –
我的困惑不在于拳击,拆箱。我提供了一个参数“add(T t)”的方法,但是它被转换为2个参数accept(T t,int value)。我期望的是这样的: required:java.lang.Integer found:java.lang.Integer,int reason:实际和形式参数列表的长度不同 –