为什么我需要声明local variable
as final
if my Inner class
需要使用内部定义的方法吗?
例子 :
class MyOuter2 {
private String x = "Outer2";
void doStuff() {
final String y = "Hello World";
final class MyInner {
String z = y;
public void seeOuter() {
System.out.println("Outer x is "+x);
System.out.println("Local variable is "+y);
MyInner mi = new MyInner();
mi.seeOuter();
}
}
}
}
为什么要使用字符串y
需要是最终常数?它有何影响?
局部变量始终存在于堆栈中,方法结束后所有局部变量都消失了。
但是,即使方法结束后,您的内部类对象也可能位于堆上(假设实例变量保留引用),因此在这种情况下,它无法访问您的局部变量,因为它们已经消失了,除非您将它们标记为final
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)