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相关推荐

  1. 局部内部类访问方法中的局部变量为什么加final

    1)从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的 ...

  2. 第三次学JAVA再学不好就吃翔(part43)--局部内部类访问局部变量

    学习笔记,仅供参考 面向对象 局部内部类访问局部变量 啥叫局部内部类? 局部内部类是指在方法中定义的内部类. 举个例子(访问局部内部类) 局部内部类: class InnerTest1 {public ...

  3. java 反射 main_java – 通过反射访问main方法中的局部变量

    Since main is static, is it possible to access instanceOfB in order to access the value of _nonStati ...

  4. 为什么局部内部类访问外边的局部变量必须为final?

    6.局部内部类访问外边的局部变量时,此变量必须为final类型  由于技术方面的限制,java的设计者们做出如下语法规定:局部内部类访问外边的局部变量时,此变量必须为final类型,(为什么请参考我的 ...

  5. java 局部内部类常用么_Java中的内部类

    一.内部类概述 在一个类的内部定义一个类.在 A 类中定义 类 B.B 类就被叫做 A 的内部类.A 类就是 B 的外部类. 二.内部类的种类 内部类分为:成员内部类.静态内部类.局部内部类.匿名内部 ...

  6. JAVA基础——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

    成员内部类 静态内部类 局部内部类 匿名内部类 1.成员内部类(实例内部类.非静态内部类) 成员内部类中不能写静态属性和方法 实例化内部类,首先需要实例化外部类,通过外部类去调用内部类   作用 要想 ...

  7. 1.17 局部内部类

    局部内部类是指在一个方法中定义的内部类.示例代码如下: public class Test {public void method() {class Inner {// 局部内部类}} } 局部内部类 ...

  8. JAVA day09 内部类(成员内部类,静态内部类,局部内部类,匿名内部类)

    一.内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. 1.成员内部类 定义在类中的方法外的类. class 外部类 { class 内部类 { } } 特点: 作为 ...

  9. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

    final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...

最新文章

  1. 如何挑选深度学习 GPU?
  2. Nginx-rtmp 直播媒体实时流实现
  3. RTT设备与驱动之I2C:
  4. 23 Refs的应用场景与选用思考
  5. php全部公开课,PHP公开课|这篇PHP的each()函数教学数,只为了帮你的PHP会学的更好...
  6. 【转载】ASP.NET自定义404和500错误页面
  7. (二)GKE上MLOps的Jenkins作业和部署
  8. python ioc框架_轻松理解 Spring 中的 IOC
  9. Centos7 使用 chronyd 进行时钟同步
  10. 如何制作数据可视化大屏
  11. 让/etc/profile文件修改后立即生效
  12. 使用git遇到的问题汇总
  13. 最顶尖的12个IT技能
  14. 6个UI面试技巧让你轻松入职大公司
  15. LabVIEW虚拟示波器设计
  16. 计算机毕业设计ssm小区宠物管理系统k8n96系统+程序+源码+lw+远程部署
  17. 网页视频播放器-插件
  18. 中国34个省未来发展趋势深度分析
  19. 洛谷P3352 [ZJOI2016]线段树
  20. 嵌入式开发之linux根文件系统移植

热门文章

  1. Android应用的Tab键,来回反复点击会报ANR,是空指针导致的,判空就可以解决
  2. android ColorDrawable的使用
  3. android 变量Map集合
  4. 算法测试—机器学习算法评价指标
  5. Cookie实现用户登录记住密码,实现自动登录
  6. eclipse 保存html 提示 save could not be completed
  7. JAVA常见异常种类
  8. MVC5 数据注解和验证
  9. java---面试题 丑数
  10. MySQL初始化脚本mysql_install_db使用简介及选项参数