區域性內部類能訪問 Java 中的區域性 final 變數嗎?


是的,我們能使用**區域性 final 變數**訪問**區域性內部類**,因為 final 變數儲存在**堆**中,並且能存活於**區域性內部類**物件存活的任意時間。

區域性內部類

  • 區域性內部類例項**能作為引數傳遞,並從方法中檢索,且它在有效的範圍內可用。
  • 區域性內部類**的唯一限制是區域性引數只能在被定義為**final**時才能執行。
  • 執行區域性引數的方法能在方法執行後呼叫,其中聲明瞭**區域性內部類**。因此,區域性引數將不再保留其值。
  • 必須在建立**區域性內部類物件**前修復值。如果需要,非 final 變數可以複製到 final 變數中,該 final 變數隨後由**區域性內部類**執行。

示例

即時演示

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

更新於: 2020 年 6 月 29 日

730 次瀏覽

開啟你的職業生涯

完成課程取得認證

開始
廣告