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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼王 高级黑马   /  2013-7-6 14:20  /  1118 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-7 22:50 编辑

为什么匿名内部类参数必须为final类型

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

4 个回复

倒序浏览
不只是匿名内部类是这样,局部内部类也是这样的。而且不只是作为参数是这样,只要匿名内部类和局部内部类想要访问它所在局部内的局部变量都要定义成final的。这是原因  http://blog.csdn.net/salahg/article/details/7529091

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
草貌路飞 发表于 2013-7-6 19:24
不只是匿名内部类是这样,局部内部类也是这样的。而且不只是作为参数是这样,只要匿名内部类和局部内部类想 ...

谢谢你的解答,我也看了那篇文章,但没看懂。。。。
回复 使用道具 举报
你要知道被final过的变量是一个常量,它虽着类的加载一直存在常量区中,生命周期很长

既始该常量的方法已经结束,这常量还是存在常量区中,不会消失。

只要该内部内,在栈内存中还有引用,实体就还存在堆中,不会消失。方法一但调用结束,在内存中就会释放,

这就是方法中的变量为什么要final的原因,因为很有可能被内部内使用,就是因为生命周期不同。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
楼主您好,我已将您帖子的状态改成“已解决”,对此如有疑问可以通过QQ632763270和我取得联系

-------------------坚持学习,黑马因你而精彩---------------
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马