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

相关文章