方法局部内部类可以访问Java中的局部final变量吗?
是的,我们可以使用方法本地内部类来访问局部最终变量,因为最终变量存储在堆中,并且只要方法局部内部类对象存在,这些变量就会一直存在。
方法本地内部类
甲 本地内部类的实例可以被递送作为参数,并从检索方法,它是可用的内部的有效范围。
方法local内部类 的唯一限制是,只有将local参数定义为final时才能执行。
可以在执行方法后调用执行局部参数的方法,在该方法中声明局部内部类。结果,本地参数将不再保留其值。
在创建 本地内部类对象之前,必须固定这些值。如果需要,可以将非最终变量复制到最终变量中,然后由本地内部类执行该最终变量。
示例
class MainClassTest { private int x = 10; public void sampleMethod() { final int y = 20; class MethodLocalInnerClassTest { public void accessMainClassVar() { System.out.println(x); //访问最终变量 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