方法局部内部类可以访问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