是的,我们可以使用方法本地内部类来访问局部最终变量,因为最终变量存储在堆中,并且只要方法局部内部类对象存在,这些变量就会一直存在。
甲 本地内部类的实例可以被递送作为参数,并从 检索方法,它是可用的内部的有效范围。
方法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