【发布时间】:2011-10-09 12:03:00
【问题描述】:
可能重复:
Why inner classes require “final” outer instance variables [Java]?
Why are only final variables accessible in anonymous class?
class Outer{
private String x = "instance variable";
void doStuff(){
String z = "local variable";
class Inner{
public void seeOuter(){
System.out.println("Outer x is : "+ x);
System.out.println("Local variable z is : " + z); //won't compile
}
}
}
}
将局部变量 z 标记为 final 可以解决问题:
final String z = "local variable"; //Now inner object can use it.
谁能解释一下发生了什么?
我确切地知道为什么在我试图访问非最终局部变量的情况下它无法编译。
即使方法完成和局部变量超出范围?
final 局部变量是否存储在堆而不是堆栈上?
【问题讨论】:
标签: java inner-classes