Local Inner类只能引用final或有效的final变量。但是Local Inner类可以引用不是最终的或实际上不是最终的成员变量。这是一个示例:
public class Outer {
private int x = 25;
public int getX() {
String message = "x is ";
class Inner {
private int x = Outer.this.x;
public void printX() {
System.out.println(message + x);
}
}
//message = "Something else is ";
x = 10;
Inner in = new Inner();
in.printX();
return x;
}
public static void main(String[] args) {
new Outer().getX();
}
}
// It prints:
// x is 10
如果我取消注释使message
无效的行,编译器会抱怨说“ 错误:(8,36)java:从内部类引用的局部变量必须是final或实际上是final ”。在这里,成员变量x
不是最终变量,但是很好,为什么?
谢谢。