黑马程序员技术交流社区
标题:
关于局部位置中内部类的问题
[打印本页]
作者:
quan23355
时间:
2013-11-26 11:21
标题:
关于局部位置中内部类的问题
本帖最后由 quan23355 于 2013-11-26 11:42 编辑
为什么在局部位置上内部类访问局部变量时要声明为final,这点不是很理解,有那位大神帮我详细解释下,谢谢。
class Outer
{
method()
{
final int x = 9; //内部类访问局部变量需声明为final
class Inner
{
public String toString()
{
return "show ..."+x;
}
}
}
}
复制代码
作者:
freehiker
时间:
2013-11-26 11:28
这个问题主要涉及到生命周期,方法体一旦运行完了就不存在栈内存中了,而内部类对象是存在堆内存中的,所以就算方法运行完了,内部类对象也未必消失,如果这时候内部类中有局部变量,那么这个变量就会访问不到,如果加上final修饰的话,这个变量就会放到常量池中,也就避免了这样的错误。所以方法体中的内部类只能访问方法中被final修饰的局部变量
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2