我试图理解 Java 中捕获变量的概念。
我找到了关于它的非常详细的文章:http : //www.devcodenote.com/2015/04/variable-capture-in-java.html
我不确定字节码部分:
类似地,为了访问封闭方法的局部变量,会制作变量的隐藏副本并将其保存在内部类文件中,从那里访问变量。
在编译时可能不知道最终原始值时,如何将其保存到类文件中(在编译期间)?
例如:
void foo(int x){
final int y = 10 + x;
class LocalClass(){
LocalClass(){
System.out.println(y); // works fine
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果作者错了,运行时是否将局部变量复制到方法区的LocalClass空间中?