为什么匿名内部类参数必须为final类型
2016-07-24 16:42
381 查看
转载:http://www.cnblogs.com/albert1017/p/3915356.html点击打开链接
首先,这关系到java对象中的生命周期的问题。
基础数据类型和引用变量(不是被引用的对象)做局部变量时(这里是和做为变量成员变量区别,它们作为成员变量后就作为对象的一部分和对象的生命
周期相同了);它们的生命中周期是有作用域的,它没有受生命周期影响这一说,但是同样在这一作用域创建的对象的生命周期并不受作用域的限制。
局部变量的生命周期与局部内部类的对象的生命周期的不一致。
内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量
时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。复
制保证生命周期延续,final保证引用一致。参考资料:http://lionheartyd.iteye.com/blog/1472407http://bbs.csdn.net/topics/300068105
首先,这关系到java对象中的生命周期的问题。
基础数据类型和引用变量(不是被引用的对象)做局部变量时(这里是和做为变量成员变量区别,它们作为成员变量后就作为对象的一部分和对象的生命
周期相同了);它们的生命中周期是有作用域的,它没有受生命周期影响这一说,但是同样在这一作用域创建的对象的生命周期并不受作用域的限制。
局部变量的生命周期与局部内部类的对象的生命周期的不一致。
内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量
时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。复
制保证生命周期延续,final保证引用一致。参考资料:http://lionheartyd.iteye.com/blog/1472407http://bbs.csdn.net/topics/300068105
相关文章推荐
- anaconda+theano+keras手写字符识别新版
- Java异常处理-----自行处理
- Java异常处理-----自行处理
- TreeSet类源码解析
- 最小生成树 Prim 算法
- Android 6.0中添加C可执行程序验证硬件驱动程序
- poj 3262 Protecting the Flowers
- Spark Shell简单使用
- 使用dbghelp生成dump文件以及事后调试分析
- STM32固件库中assert_param的作用——学习笔记
- 【排序算法】——桶排序
- 嵌入式根文件系统的移植和制作详解
- HDU5301 Buildings [图形]
- MySQL常用指令(备查)
- Scala 提取器(Extractor)
- log4j配置打印mybatis sql语句
- vim工作中常用的操作
- JavaScript表单焦点自动切换代码
- HDU----1875
- java面向对象