黑马程序员技术交流社区

标题: 匿名内部类引用外部变量为什么要加final [打印本页]

作者: zhou987932946    时间: 2016-10-28 23:26
标题: 匿名内部类引用外部变量为什么要加final
如上求解答

作者: Jarc    时间: 2016-10-28 23:42
因为局部变量的生命周期和方法有关,方法弹栈,变量就跟着现实,到此时堆内存的对象可能还存在,但是这时变量可能已经没有了

作者: evan.zhou    时间: 2016-10-29 00:13
举个代码例子

作者: cao791203348    时间: 2016-10-29 00:19
JDK1.8版本会默认加上了

作者: character3    时间: 2016-10-29 00:53
不加final的话运行完弹栈被释放掉了,下次再调用就会报错

作者: 寒冰夜    时间: 2016-10-29 09:19
生命周期和调用的问题

作者: jiaogege520    时间: 2016-10-29 09:31
学习了!!!
作者: 今何在    时间: 2016-10-29 10:00
学习了,对这个问题也一直有相同的疑问
作者: yeshusheng    时间: 2016-10-30 10:36
方法运行完就会弹栈,而对象没有马上消失,有可能还要使用者个变量,加final修饰会将这个变量加载进常量池,延长了生命周期
作者: zhou987932946    时间: 2016-10-31 00:21
Jarc 发表于 2016-10-28 23:42
因为局部变量的生命周期和方法有关,方法弹栈,变量就跟着现实,到此时堆内存的对象可能还存在,但是这时变 ...

那要是引用的是成员变量呢?也要加final吗
作者: Jarc    时间: 2016-11-1 22:57
zhou987932946 发表于 2016-10-31 00:21
那要是引用的是成员变量呢?也要加final吗

成员不用,因为内部类是在外部类的基础上创建的





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