黑马程序员技术交流社区

标题: 局部内部类访问局部变量 [打印本页]

作者: 原满    时间: 2013-5-30 18:53
标题: 局部内部类访问局部变量
本帖最后由 原满 于 2013-5-31 10:36 编辑

局部内部类访问局部变量时,局部变量一定要用final修饰, 为什么一定要用final修饰呢?
作者: littlefoxtail    时间: 2013-5-30 19:33
这是因为局部变量的生命周期原因:内部类对象的生命周期会超过局部变量的生命期,内部类对象访问出错
局部变量的生命期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,挂了。
而内部类对象生命期:与其它类一样,当创建一个局部内部类对象后,只有当没有其它人再引用它时,被垃圾回收,它才挂掉了
加上final修饰后,通过将final局部变量"复制"一份,复制品直接作为局部内中的数据成员,局部变量挂掉,还有拷贝呢。

作者: 神之梦    时间: 2013-5-30 20:53
littlefoxtail 发表于 2013-5-30 19:33
这是因为局部变量的生命周期原因:内部类对象的生命周期会超过局部变量的生命期,内部类对象访问出错
局部 ...

{:soso_e179:}
作者: 残影    时间: 2013-5-30 23:07
内部类定义在局部时:
1、不可以被成员修饰符修饰(比如private,static)
2、可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。。。


是因为访问受限制所以必须final修饰吧?嘿嘿
作者: 殇_心。    时间: 2013-5-31 10:11
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2