區域性內部類能訪問 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP