44问答网
所有问题
匿名内部类访问局部变量 为什么final
如题所述
举报该问题
推荐答案 2017-10-10
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类中的方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域只在这个方法内部有效。因为编译的时候内部类和方法在同一级别上,所以方法中的变量或参数只有为final,内部类才可以引用。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/YVZ6GVG3W3RZDYGWG3.html
其他回答
第1个回答 2017-10-10
匿名内部类不能访问外部类方法中的局部变量,除非该变量被声明为final类型
相似回答
为什么匿名内部类
调用的方法内
局部变量
必须
答:
于是干脆就要求“
匿名内部类
调用的方法内
局部变量
必须为
final
”,这样A$1.class
访问
A类方法局部变量部分就直接用常量来表示 这是一个编译器设计的问题,如果你了解java的编译原理的话很容易理解。首先,内部类被编译的时候会生成一个单独的内部类的.class文件,这个文件并不与外部类在同一class文件中。当...
为什么匿名内部类
方法参数要使用
final
答:
5.
匿名内部类为什么
只能用
final
.是
变量
的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要
访问
这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方...
为什么匿名内部类
中引用的
局部变量
和参数需
答:
1、当变量是
final
时,通过将final局部变量"复制"一份,复制品直接作为
局部内部
中的数据成员.这样:当局部
内部类访问局部变量
时,其实真正访问的是这个局部变量的"复制品"(即:这个复制品就代表了那个局部变量).因此:当运行栈中的真正的局部变量死亡时,局部内部类对象仍可以 访问局部变量(其实访问的是"复制...
多线程中,共享的
变量为何
在main()里必须用
final
修饰
答:
为什么匿名内部类
参数必须为
final类型
1) 从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的
局部变量
(形式参数或局部变量)是天经地义的.是很自然的 2) 为什么JAVA中要加上一条限制:只能
访问final
型的局部...
大家正在搜
内部类访问局部变量
final修饰成员变量和局部变量
静态局部变量与一般局部变量对比
final修饰的局部变量
内部类可以是final类吗
java final变量
外部变量和全局变量
final修饰的变量是常量吗
javafinal修饰变量
相关问题
匿名内部类访问局部变量 为什么final
为什么Java匿名内部类的方法中用到的局部变量都必须定义为f...
为什么匿名内部类调用的方法内局部变量必须为final
为什么匿名内部类只能访问其所在方法中的final类型的局部变...
JAVA中内部类访问的局部变量为什么要用final修饰
为什么匿名内部类和局部内部类只能访问final变量
为什么匿名内部类和局部内部类只能访问final变量
java为什么匿名内部类的参数引用时final