44问答网
所有问题
java为什么匿名内部类的参数引用时final
如题所述
举报该问题
推荐答案 2016-08-08
内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/DYWRRYRRKZR6K3636G.html
相似回答
为什么匿名内部类
方法
参数
要使用
final
答:
基础语法:
如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final的
。1.匿名内部类肯定是局部内部类(在一个方法里面定义的内部类),因为在java中,语句必须写在方法里,而匿名内部类其实就是一条特殊的语句;2.外部给定的对象就是所有外来的对象:外部方法的...
为什么匿名内部类参数
必须为
final类型
答:
当变量是
final时
,若是基本数据类型,由于其值不变,因而:其复制品与原始的量是一样.语义效果相同.(若:不是final,就无法保证:复制品与原始变量保持一致了,因为:在方法中改的是原始变量,而局部
内部类
中改的是复制品)当变量是final时,若是
引用类型
,由于其引用值不变(即:永远指向同一个对象),因而:其...
java 中为什么引用
外部
类的
变量和方法都要是
final
内型 的
答:
Thinking In
Java
里面的说法(唯一正确的说法): 如果定义一个
匿名内部类
,并且希望它使用一个在其外部定的对象,那么编译器会要求其
参数引用
是
final
的。以下是分析过程:首先看代码 public class Tester { public static void main(String[] args) { A a = new A(); C c = new C(...
为什么匿名内部类
调用的方法内局部变量必须
答:
这是一个编译器设计的问题,如果你了解
java的
编译原理的话很容易理解。首先,内部类被编译
的时候
会生成一个单独的
内部类的
.class文件,这个文件并不与外部类在同一class文件中。当外部类传
的参数
被内部类调用时,从java程序的角度来看是直接的调用例如:public void dosome(final String a,
final int
b)...
大家正在搜
匿名内部类为什么用final
内部类的变量为什么要用final
匿名内部类可以声明为final
java中什么是内部类
java匿名内部类
java内部类的类型
java内部类外部类
内部类可以是final类吗
java局部内部类
相关问题
java为什么匿名内部类的参数引用时final
java中,匿名内部类可以使用外部类的成员变量吗
JAVA匿名的内部类为什么不能继承其它类
JAVA中内部类访问的局部变量为什么要用final修饰
OC中匿名内部类有什么作用
java 8 局部内部类传递参数不需要加final
java 内部类 为什么可以实现接口
java内部类与匿名内部类作用是什么?