局部内部类能访问 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
广告