为什么内部类调用外部变量,外部变量必须用final修饰
来源:互联网 发布:芒种日期算法 编辑:程序博客网 时间:2024/06/05 20:57
因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。
首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
1 0
- 为什么内部类调用外部变量,外部变量必须用final修饰
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- 使用匿名内部类,隐式调用外部变量,外部变量需要final修饰
- 为什么匿名内部类中用外部类的成员变量,外部类的成员变量必须是final
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 匿名内部类使用外部的局部变量时为什么一定要final修饰
- 为什么内部类访问的外部变量需要使用final修饰
- 局部内部类访问外部变量为什么需要使用final修饰
- 匿名内部类引入外部变量必须是final?
- java 内部类 外部局部变量必须 final 原因
- 匿名内部类使用的外部变量为什么要是final
- 内部类引用外部类局部变量,外部类局部变量必须是final
- 解析——java匿名内部类使用外部变量时,外部变量必须是final
- 内部类使用final外部变量
- Python函数第四节
- iOS的本地存储
- hdu5726 多校1 GCD【rmq+二分】
- 给照片换背景
- redis 键值相关命令
- 为什么内部类调用外部变量,外部变量必须用final修饰
- php URL图片资源传参生成对应尺寸图片
- 【杭电4548】美素数
- reverse engineering hibernate 生成带注解的实体类
- 表达式括号匹配_洛谷1739_栈
- 5.3.1codevs1073 家族
- java版KMP算法
- 热血军团-英文单词
- 自定义 Toast View