88问答网
所有问题
java为什么匿名内部类的参数引用时final
如题所述
举报该问题
推荐答案 2017-01-27
因为实际上匿名内部类捕获的是周围环境中变量的值,而不是引用
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/ggcMg1cVgMcg1Ba111K.html
相似回答
java为什么匿名内部类的参数引用时final
答:
内部类
会自动拷贝外部变量的
引用
,为了避免:1. 外部方法修改引用,而导致内部类得到的引用值不一致 2.内部类修改引用,而导致外部方法
的参数
值在修改前和修改后不一致。于是就用
final
来让该引用不可改变。
java为什么匿名内部类的参数引用时final
答:
内部类里面使用外部类的局部变量时,其实就是
内部类的
对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用
final
声明保证一致性。
为什么匿名内部类
只能访问其所在方法中的
final类型的
局部变量
答:
1. 这里所说的“
匿名内部类
”主要是指在其外部
类的
成员方法内定义的同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被
final
修饰。原因是编译器实现上的困难:内部类对象的生命周期很有可能会超过局部变量的生命周期。2. 局部变量的生命周期:当该方法被调用时,该方法中的局部变量...
为什么java中
有的类必须使用
Final
定义??
答:
这个是规定,避免内部类析构,它的局部变量被释放,
为了它可以被访问
,定义为final的,为它准备一个“副本”。
为什么
线程里面的变量必须是
final
答:
因为,在
匿名内部类
中
引用
的外部对象受到外部线程的作用域的制约有其特定的生命周期,以线程为例,当外部的变量生命周期已经完结之后,内部的线程还在运行,怎么样解决这个外部生命周期已经结束而在内部却需要继续使用呢,这个
时候
就需要在外部变量中添加
final
修饰符,...
为什么匿名内部类
中
引用
的局部变量和
参数
需
答:
(1)当变量是
final时
,若是基本数据类型,由于其值不变,因而:其复制品与原始的量是一样.语义效果相同.(若:不是final,就无法保证:复制品与原始变量保持一致了,因为:在方法中改的是原始变量,而局部
内部类
中改的是复制品)(2)当 变量是final时,若是
引用类型
,由于其引用值不变(即:永远指向同一个...
用数组的形式
为什么匿名内部类
可以修改局部变量的值,而且前面也用
final
...
答:
数组
类型的
变量是
引用类型
,
final
影响的是isFinish,作用是使isFinish只能被赋值一次,即isFinish一旦引用了某个数组对象,就不能再改为引用另一个数组对象。即:final boolean[] isFinish={false};是允许的,而再赋值:isFinish=new boolean[] {true};是不允许的。但isFinish引用的原数组对象的元素是...
匿名内部类
访问局部变量
为什么final
答:
编译
的时候
,各个类(
匿名类
)还是独立的,用到的这个局部变量需要 在new匿名对象时传递给
内部类
,如果不是
final
而中途改变的话,那么就 不一致了(值改变 内部类不知道)
大家正在搜
匿名内部类为什么用final
内部类的变量为什么要用final
匿名内部类可以声明为final
java内部类final
匿名内部类final
java中什么是内部类
java匿名内部类
java内部类的类型
java内部类外部类
相关问题
java为什么匿名内部类的参数引用时final
为什么匿名内部类方法参数要使用final
匿名内部类调用参数时为什么参数必须是final的
java为什么匿名内部类的参数引用时final
java为什么匿名内部类的参数引用时final
java为什么匿名内部类的参数引用时final
java为什么匿名内部类的参数引用时final
java为什么匿名内部类的参数引用时final