黑马程序员技术交流社区
标题:
局部内部类访问局部变量
[打印本页]
作者:
原满
时间:
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