局部内部类访问它所在方法中的局部变量必须是final
https://www.cnblogs.com/oldpub-blog/p/9026824.html
https://blog.csdn.net/whuslei/article/details/6251020
局部内部类所在方法体中的所有局部变量都必须是final类型(JDK1.8以上会隐式自动加上final)
"\n"
根本原因:因为局部内部类对象的生命周期比局部变量的生命周期长。当局部变量当所处的函数执行结束后就已经死亡了,不存在了,但是局部内部类对象还可能一直存在(只要有人还引用该对象),这样就会出现了一个悲剧的结果,局部内部类对象访问一个已不存在的局部变量。
"\n"
解决办法:用final修饰局部变量,这是因为局部内部类最终会被编译为一个单独的类,其所访问的final局部变量在编译时会成为这个类的属性(即在局部内部类中生成一个该局部变量的拷贝)。通过将final局部变量”复制”一份,复制品直接作为方法内部类中的数据成员,由于被final修饰的变量赋值后不能再修改,所以就保证了复制品与原始变量的一致。
转载于:https://blog.51cto.com/maplebb/2154866
局部内部类访问它所在方法中的局部变量必须是final相关推荐
- 局部内部类访问方法中的局部变量为什么加final
1)从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的 ...
- 第三次学JAVA再学不好就吃翔(part43)--局部内部类访问局部变量
学习笔记,仅供参考 面向对象 局部内部类访问局部变量 啥叫局部内部类? 局部内部类是指在方法中定义的内部类. 举个例子(访问局部内部类) 局部内部类: class InnerTest1 {public ...
- java 反射 main_java – 通过反射访问main方法中的局部变量
Since main is static, is it possible to access instanceOfB in order to access the value of _nonStati ...
- 为什么局部内部类访问外边的局部变量必须为final?
6.局部内部类访问外边的局部变量时,此变量必须为final类型 由于技术方面的限制,java的设计者们做出如下语法规定:局部内部类访问外边的局部变量时,此变量必须为final类型,(为什么请参考我的 ...
- java 局部内部类常用么_Java中的内部类
一.内部类概述 在一个类的内部定义一个类.在 A 类中定义 类 B.B 类就被叫做 A 的内部类.A 类就是 B 的外部类. 二.内部类的种类 内部类分为:成员内部类.静态内部类.局部内部类.匿名内部 ...
- JAVA基础——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
成员内部类 静态内部类 局部内部类 匿名内部类 1.成员内部类(实例内部类.非静态内部类) 成员内部类中不能写静态属性和方法 实例化内部类,首先需要实例化外部类,通过外部类去调用内部类 作用 要想 ...
- 1.17 局部内部类
局部内部类是指在一个方法中定义的内部类.示例代码如下: public class Test {public void method() {class Inner {// 局部内部类}} } 局部内部类 ...
- JAVA day09 内部类(成员内部类,静态内部类,局部内部类,匿名内部类)
一.内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. 1.成员内部类 定义在类中的方法外的类. class 外部类 { class 内部类 { } } 特点: 作为 ...
- java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...
最新文章
- 如何挑选深度学习 GPU?
- Nginx-rtmp 直播媒体实时流实现
- RTT设备与驱动之I2C:
- 23 Refs的应用场景与选用思考
- php全部公开课,PHP公开课|这篇PHP的each()函数教学数,只为了帮你的PHP会学的更好...
- 【转载】ASP.NET自定义404和500错误页面
- (二)GKE上MLOps的Jenkins作业和部署
- python ioc框架_轻松理解 Spring 中的 IOC
- Centos7 使用 chronyd 进行时钟同步
- 如何制作数据可视化大屏
- 让/etc/profile文件修改后立即生效
- 使用git遇到的问题汇总
- 最顶尖的12个IT技能
- 6个UI面试技巧让你轻松入职大公司
- LabVIEW虚拟示波器设计
- 计算机毕业设计ssm小区宠物管理系统k8n96系统+程序+源码+lw+远程部署
- 网页视频播放器-插件
- 中国34个省未来发展趋势深度分析
- 洛谷P3352 [ZJOI2016]线段树
- 嵌入式开发之linux根文件系统移植