正如我所知的内部和外部类的外部变量范围存储在生成的字节码(例如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