正如我所知的內部和外部類的外部變量範圍存儲在生成的字節碼(例如OuterClass $ 1.class)中。 我想知道下一個例子,其中存儲的變量:超出範圍的變量存儲在lambda表達式中
public Function<Integer, Integer> curring(Integer elem) {
return x -> x * elem;
}
Arrays.asList(1, 2, 3, 4, 5).stream().map(curring(2)).map(curring(5)).forEach(System.out::println);
LAMBDA被翻譯的方法,而不是類。這是否意味着這2個調用會產生2個獨立的方法?
已經找到關於此主題的有趣閱讀:[lambda的翻譯(http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation。html) – Ving
這不是一個有趣的*閱讀,那就是*閱讀關於lambda翻譯... – Eugene