有鑑於此:Lambda表達式VS方法參照實施細則
class MyClass {
static class A {
public boolean property() {
return Math.random() < 0.5;
}
}
static List<A> filterLambda(List<A> list) {
return list.stream().filter(a -> a.property()).collect(Collectors.toList());
}
static List<A> filterMethodCall(List<A> list) {
return list.stream().filter(A::property).collect(Collectors.toList());
}
}
- 什麼是什麼編譯器每種方法在區別在哪裏?
- 如果有任何問題,內存使用情況或運行時是否有差異? (即使它很小,問題只是學術問題)
PD:我知道這個問題與this one類似,但我認爲它沒有得到正確解決。
「編譯器做什麼?」可能是超出了這裏的答案的範圍。該規範提供了一些理論背景信息,但不清楚你想深入實際編譯器*實現*的深度。我可以肯定地說**是爲兩種方法生成的字節碼都是相同的**。 – Marco13 2015-03-25 15:04:45