Java 中方法本地内部类可以访问本地 final 变量吗?
javaobject oriented programmingprogramming
是的,我们可以使用方法本地内部类访问本地 final 变量,因为 final 变量存储在堆中,并且只要方法本地内部类对象存在,它就一直存在。
方法本地内部类
- 本地内部类实例可以作为参数传递,并从方法中检索,并且它在有效范围内可用。
- 方法本地内部类中的唯一限制是,只有当本地参数定义为final时才能执行。
- 执行本地参数的方法可以在方法执行后调用,其中本地内部类 class 被声明。因此,本地参数将不再保留其值。
- 在创建 本地内部类对象之前,必须修复这些值。如果需要,可以将非最终变量复制到最终变量中,该变量随后由本地内部类执行。
示例
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