局部内部类能访问 Java 中的局部 final 变量吗?
是的,我们能使用**局部 final 变量**访问**局部内部类**,因为 final 变量存储在**堆**中,并且能存活于**局部内部类**对象存活的任意时间。
局部内部类
- 局部内部类实例**能作为参数传递,并从方法中检索,且它在有效的范围内可用。
- 局部内部类**的唯一限制是局部参数只能在被定义为**final**时才能执行。
- 执行局部参数的方法能在方法执行后调用,其中声明了**局部内部类**。因此,局部参数将不再保留其值。
- 必须在创建**局部内部类对象**前修复值。如果需要,非 final 变量可以复制到 final 变量中,该 final 变量随后由**局部内部类**执行。
示例
class MainClassTest {
private int x = 10;
public void sampleMethod() {
final int y = 20;
class MethodLocalInnerClassTest {
public void accessMainClassVar() {
System.out.println(x);
// accessing the final variable
System.out.println(c);
}
}
MainClassTest mainTest = new MethodLocalInnerClassTest();
mainTest.accessMainClassVar();
}
}
// Test.java
public class Test {
public static void main(String args[]) {
MainClassTest test = new MainClassTest();
test.sampleMethod();
}
}输出
10 20
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP