局部内部类访问外部变量为什么需要使用final修饰
来源:互联网 发布:c语言和java哪个难 编辑:程序博客网 时间:2024/05/29 04:13
因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。
首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,Java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,Java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
阅读全文
0 0
- 局部内部类访问外部变量为什么需要使用final修饰
- 为什么内部类访问局部变量需要加final修饰?
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 匿名内部类使用外部的局部变量时为什么一定要final修饰
- 内部类访问的外部变量需要使用final修饰解释原因
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- 局部内部类为什么只能访问final修饰的局部变量
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 内部类访问局部变量的时候,为什么变量必须加上final修饰(转)
- 内部类访问局部变量的时候,为什么变量必须加上final修饰
- 使用匿名内部类,隐式调用外部变量,外部变量需要final修饰
- 局部内部类+外部类访问final变量+final 回顾
- 为什么方法中的内部类只能访问final修饰的局部变量
- deep learning 训练过程 wake-sleep
- 读取Excel工具类ExcelUtils
- Android动画 SVG VectorDrawable 基础三
- TypeScript模块整理(一)基础语法
- 爬虫小程序-02
- 局部内部类访问外部变量为什么需要使用final修饰
- tomcat启动时候报错Can't convert argument: null
- python 中 range()和xrange()的区别
- 电脑蓝屏0x000024解决记录
- java接口文件获取类名,方法
- bzoj2843 极地旅行社
- Java文件流关闭和垃圾回收问题 (文件无法删除问题)
- 一个农村女孩的独白:考大学有什么用?考过的和没考的,都要看看
- String转json简单方法