44问答网
所有问题
为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
如题所述
举报该问题
推荐答案 2017-10-31
为了延长局部变量的生命周期,因为方法调用完了,就会释放内存,但是内部类不会立马释放,不会被垃圾回收机制立即回收,还会引用方法里面的局部变量,所以用final修饰.
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/GZV3K6Z6WYZW63ZWD3.html
相似回答
为什么匿名内部类
方法
参数要
使用
final
答:
1.
匿名内部类
肯定是局部内部类(在一个方法里面定义的内部类),因为在
java中
,语句必须写在方法里,而匿名内部类其实就是一条特殊的语句;2.外部给定的对象就是所有外来的对象:外部方法的形参、
局部变量
、基本类型或自定义类型等。3.内部类很微妙,它可以直接
访问外部
类的private field,这打破了类的封...
java为什么匿名内部类的参数
引用时
final
答:
内部类里面使用
外部类的局部变量
时,其实就是
内部类的
对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图
访问外部
方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用
final
声明保证一致性。
java 中为什么
引用
外部类的变量
和方法都要是
final
内型 的
答:
原因就是为了让我们能够挺合逻辑的直接使用外部变量
,而且看起来是在始终使用 外部的arg变量(而不是赋值以后的自己的字段)。考虑出现这种情况:在局部内部类中使用外部变量arg,如果编译器允许arg不是final的,那么就可以对这个变量作变值操作(例如arg++),根据前面的分析,变值操作改变的是var$arg,而...
为什么匿名内部类
中引用
的局部变量
和
参数需
答:
1、当变量是final时,通过将
final局部变量
"复制"一份,复制品直接作为
局部内部
中的数据成员.这样:当局部
内部类访问局部变量
时,其实真正
访问的
是这个局部变量的"复制品"(即:这个复制品就代表了那个局部变量).因此:当运行栈中的真正的局部变量死亡时,局部内部类对象仍可以 访问局部变量(其实访问的是"复制...
大家正在搜
内部类的变量为什么要用final
匿名内部类访问外部类成员变量
java内部类访问外部类变量
匿名内部类访问外部变量
java内部类引用外部变量
final修饰局部变量
java内部类外部类
从内部类中访问本地变量
内部类使用局部变量
相关问题
为什么Java匿名内部类的方法中用到的局部变量都必须定义为f...
匿名内部类访问局部变量 为什么final
Java的匿名内部类不能引用非final类型变量吗?为什么?
java为什么匿名内部类的参数引用时final
Java内部类引用外部类中的局部变量为何必须是final问题...
不是说java 的局部内部类中访问局部变量的变量要加fina...
JAVA中内部类访问的局部变量为什么要用final修饰
java为什么匿名内部类的参数引用时final