黑马程序员技术交流社区

标题: 匿名内部类里使用成员为什么只能final [打印本页]

作者: 孤单背影    时间: 2015-10-27 12:15
标题: 匿名内部类里使用成员为什么只能final
求指教哒哒哒哒哒哒
作者: zhy阿狸    时间: 2015-10-27 12:31
同求详细解释,通俗易懂点,谢谢!
作者: fenger7    时间: 2015-10-27 12:35
因为是匿名的,所以只能调用一次,所以用final修饰
作者: Sayman    时间: 2015-10-27 12:41
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
作者: 孤单背影    时间: 2015-10-27 21:30
Sayman 发表于 2015-10-27 12:41
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这 ...

谢谢大婶悉心指导
作者: jyf823691221    时间: 2015-10-27 21:42
谢谢大婶悉心指导
作者: lkjmnbqwe    时间: 2015-10-27 21:49
匿名内部类真的弄得好晕
作者: 小小鑫    时间: 2015-10-27 22:02
Sayman 发表于 2015-10-27 12:41
因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这 ...

不错,你这样一说,感觉理解了不少,
作者: dai2686779    时间: 2015-10-27 22:23
6666666666666666666666666
作者: 黑马第一毒蘑菇    时间: 2015-10-27 22:30
恩,楼上回答的很详细了,因为final后会存储在常量池里面,如果不final调用了一次后会消失,但是存储在常量池里就可以多次调用。   但是貌似匿名内部类就是调用一次就消失,所以这样final我也不知道到底有什么意义。  很久以前学的时候就带了这个疑问。。。
作者: 大头爱傻瓜    时间: 2015-10-27 22:37
匿名内部类也是类,他的加载是最先进来的,变量的调用方法的时候才会被赋值,只有被final修饰了,才能保证被调用的时候有值
作者: damofeixue    时间: 2015-10-27 22:37
前几天刚学的,有一点点忘了
作者: 孤单背影    时间: 2015-10-28 00:37
大头爱傻瓜 发表于 2015-10-27 22:37
匿名内部类也是类,他的加载是最先进来的,变量的调用方法的时候才会被赋值,只有被final修饰了,才能保证被调 ...

那匿名和静态谁先运行,貌似你说的我更能接受
作者: andy2210    时间: 2015-10-28 00:38
大神挺多  一起加油
作者: 熊金磊    时间: 2015-10-28 00:42
受教了!
作者: 叶子和大人    时间: 2015-10-28 17:29
xuexidaole




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