[英]Non final variable from inner class : should be automatically fixed by compiler?
當我使用內部類的非final變量時,我有一個編譯錯誤:
public static void main(String[] args) {
String s = "hello";
s += "world";
Object myObj = new Object() {
public String toString() {
return s; // compile error
}
};
System.out.println(myObj);
}
但是,我可以通過添加一個引用我想要訪問的另一個變量的偽終結變量tmp
來解決這個問題:
public static void main(String[] args) {
String s = "hello";
s += "world";
final String tmp = s;
Object myObj = new Object() {
public String toString() {
return tmp; // that works!
}
};
System.out.println(myObj);
}
例如,編譯器可以輕松地自動化添加臨時最終變量的過程。
我的問題是:為什么編譯器不會自動執行允許我們擺脫此錯誤的簡單更改?
編譯器不能用常量替換對局部變量的所有引用,但是當構造內部類的實例時,該值將傳遞給適當的構造函數並存儲在變量中。 根據需要,自動實現它很麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.