在Java 8中,它看起來像一個類的lambdas保存在一個數組中。例如,讓我們說我們有這個類:獲取類的列表lambdas
public class LambdaFactory {
public Supplier<Integer> getOne(){
return() -> 42;
}
public Supplier<Integer> getTwo(){
return() -> 128;
}
public Supplier<Integer> getThree(){
return() -> 3;
}
}
,然後我把它打印出來,像這樣:
System.out.println(factory.getOne());
System.out.println(factory.getOne());
System.out.println(factory.getTwo());
System.out.println(factory.getThree());
輸出會像
[email protected]
[email protected]
[email protected]
[email protected]
所以我們可以看到這裏有兩件事。被稱爲兩次的相同lambda給了我們相同的lambda對象(這與每次我們可以獲得新內部類的anon內部類不一樣)。我們也看到他們看起來像是被保存在某種類型的「Lambda」結構中,這是類的一部分
我的問題是,我可以在課堂上看到lambda表達式嗎?我沒有任何理由這樣做,我只是喜歡解剖東西
是什麼讓你覺得他們在一個數組? – assylias
我認爲你在這裏得出錯誤的結論。匿名內部類通常將'$ 1'構造作爲其名稱的一部分 - 這是一個常見的習慣用法,即帶有美元符號的類名是在運行時構建的,例如使用動態Proxy類時。 –
我想我不知道它是一個數組還是它是什麼,但lambda表達式是一樣的。如果我對getOne的兩個供應商執行jUnit Assert.assertSame,它將通過,但如果它是annon內部類,則會失敗。請參閱https://github.com/ryber/J8Lambda/blob/master/src/test/java/examples/ObjectLifeCycle.java – ryber