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:實際和形式參數列表的長度不同 –