【发布时间】:2019-12-22 12:58:15
【问题描述】:
这个例子是在JavaScript中模拟闭包(我不懂JS):
public class Lambda {
public static void main(String[] args) {
Supplier generator = Lambda.generator();
System.out.println(generator.get());
System.out.println(generator.get());
System.out.println(generator.get());
}
static Supplier<Integer> generator() {
Integer arr[] = {0};
return () -> ++arr[0];
}
}
输出为 1 2 3。
通常局部方法变量的生命周期受方法执行时间的限制。但在这种情况下,对arr[] 的引用存储在某处。那么它存储在哪里以及引擎盖下是什么?
【问题讨论】: