博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么匿名内部类参数必须为final类型
阅读量:6608 次
发布时间:2019-06-24

本文共 432 字,大约阅读时间需要 1 分钟。

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

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

 

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

 

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

 

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

 

参考资料:

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

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

 

转载地址:http://xkiso.baihongyu.com/

你可能感兴趣的文章
A熟知SP.NET---WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResourceMapping。
查看>>
数据结构Java实现05----栈:顺序栈和链式堆栈
查看>>
Codeforces Round #319 (Div. 1) C. Points on Plane 分块
查看>>
Redis源代码分析(二十七)--- rio制I/O包裹
查看>>
STM32电源管理
查看>>
Android音频输入通道的底层硬件和软件开发分析
查看>>
php中利用array_filter过滤数组为空值
查看>>
Linux1:Linux概述
查看>>
Promise 学习笔记 - 时间支配者
查看>>
Lintcode: Sqrt(X)
查看>>
Jmeter 新手
查看>>
iOS之UI--关于modal
查看>>
各种U启网启什么的都是浮云
查看>>
请问JDBC中IN语句怎么构建
查看>>
2015第52周六
查看>>
UIScrollView设置了contentSize后还是没办法滚动?
查看>>
POJ 1205 Water Treatment Plants(递推)
查看>>
国内外DNS服务器地址列表
查看>>
买电脑之受骗经历--与诸位共享,愿诸位多一个心眼
查看>>
Lind.DDD.Authorization用户授权介绍
查看>>