黑马程序员技术交流社区

标题: 局部内部类在访问,局部变量为什么必须... [打印本页]

作者: TheBest__^    时间: 2014-8-29 09:42
标题: 局部内部类在访问,局部变量为什么必须...
局部内部类在访问局部变量的时候,局部变量为什么必须使用final修饰? :dizzy:变量为什么必须使用final修饰? :dizzy:
作者: 木易在他乡    时间: 2014-8-29 11:12
这个问题很底层,匿名内部类的生命周期在上层方法结束后可能还继续运行着,因此要求其访问到的局部变量自然也得保留着,且值不能变更,只有将它final。
作者: 空洞的望着窗外    时间: 2014-8-29 12:26
本帖最后由 空洞的望着窗外 于 2014-8-29 12:38 编辑

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




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