可能重複:
Why inner classes require 「final」 outer instance variables [Java]?
Why are only final variables accessible in anonymous class?方法本地內部類只能訪問最終的局部變量。爲什麼?
class Outer{
private String x = "instance variable";
void doStuff(){
String z = "local variable";
class Inner{
public void seeOuter(){
System.out.println("Outer x is : "+ x);
System.out.println("Local variable z is : " + z); //won't compile
}
}
}
}
標記局部變量z作爲最終解決了這個問題:
final String z = "local variable"; //Now inner object can use it.
任何人都可以請解釋發生了什麼?
我確切地知道爲什麼它不能編譯的情況下,我想訪問非最終的局部變量。
即使方法完成並且局部變量超出範圍,是否允許局部變量最終保持活動狀態?
最終的局部變量是否存儲在堆而不是堆棧上?
:但這裏的問題是爲什麼標記一個方法局部變量final讓它可訪問? – Anu11
@ Anu11我會再讀一遍最後一段。 ;) –