码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-15 19:31:09      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:blog   http   java   使用   io   数据   ar   art   

首先,这关系到java对象中的生命周期的问题。

基础数据类型和引用变量(不是被引用的对象)做局部变量时(这里是和做为变量成员变量区别,它们作为成员变量后就作为对象的一部分和对象的生命周期相同了);它们的生命中周期是有作用域的,它没有受生命周期影响这一说,但是同样在这一作用域创建的对象的生命周期并不受作用域的限制。

 

局部变量的生命周期与局部内部类的对象的生命周期的不一致。

 

内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。

 

复制保证生命周期延续,final保证引用一致。

 

参考资料:

http://lionheartyd.iteye.com/blog/1472407

http://bbs.csdn.net/topics/300068105

 

为什么匿名内部类参数必须为final类型,布布扣,bubuko.com

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

标签:blog   http   java   使用   io   数据   ar   art   

原文地址:http://www.cnblogs.com/albert1017/p/3915356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!