A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

局部内部类在访问局部变量的时候,局部变量为什么必须使用final修饰? :dizzy:变量为什么必须使用final修饰? :dizzy:

2 个回复

倒序浏览
这个问题很底层,匿名内部类的生命周期在上层方法结束后可能还继续运行着,因此要求其访问到的局部变量自然也得保留着,且值不能变更,只有将它final。
回复 使用道具 举报
本帖最后由 空洞的望着窗外 于 2014-8-29 12:38 编辑

局部变量的作用域问题,局部变量的生命周期跟局部内部类的生命周期不一致,当调用方法时,(局部内部类在方法中),局部变量生命开始,局部内部类生命也开始,而当方法出栈时,(就是结束)局部变量生命结束了,但是内部类对象还可能存在,只有当没有引用该对象时候,才会死亡。而局部内部类的对象无法访问一个已经死亡的(不存在的)局部变量,要怎么做呢?只要确保局部变量的生命周期跟局部内部类的生命周期一样时,需要加final关键字,而static final是全局常量,至于为什么要用final这个词,我也有点晕啊,上午刚看完。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马