《java中內部類在區域性時,訪問許可權》
阿新 • • 發佈:2018-12-26
/* 內部類定義在區域性時, 1,不可以被成員修飾符修飾 2,可以直接訪問外部類中的成員,因為還持有外部類中的引用。 但是不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。 */ class Outer { void method(final int a) { final int y = 4; class Inner { void function() { System.out.println(a); } } new Inner().function(); } } class Inner { public static void main(String[] args) { new Outer().method(7); new Outer().method(8); Outer out = new Outer(); out.method(7); out.method(8); } }
Outer out = new Outer();
out.method(7);
out.method(8);
這個寫法有些人看了可能會很奇怪,這樣子能編譯通過麼?
被final修飾之後不是不能改變其值了麼?
的確是這樣。
但是,作為一個函式的引數,或者說在一個函式中。
他是在棧記憶體的,隨著函式執行完,他的記憶體也會釋放。
所以,這樣子是不是有錯誤的!