區域性內部類能訪問 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
廣告