訪問外部匿名類的領域從內部B類訪問外部類A的域x,我知道你可以使用「A.this.x」。但如果外部類也是匿名的呢?例如,從內部匿名類
public class Main1 {
public static void main(String[] args) {
Comparable c1 = new Comparable(){
int x = 3;
public int compareTo(Object o) {
Comparable c2 = new Comparable(){
int x = 4;
public int compareTo(Object o) {
return x; // <-- THIS LINE
}
};
return c2.compareTo(o);
}
};
System.out.println(c1.compareTo(null));
}
}
當運行該代碼,被印刷的4值,因爲這是C2的字段x的值。但是,我想更改標記爲「THIS LINE」的行,以便它返回外部類的x(即c1的字段x,值爲3)。如果外部類(即C1的類)是一個名爲A級,那麼我可以代替
return x;
與
return A.this.x;
但由於外部類也是匿名的,我沒有一個使用的名字。
問:是否有修改標註「本線」行,以便它指的是C1的域x,而不是C2的,在不改變匿名類到名爲類的方法嗎?
我意識到這段代碼真的很醜,並且這種方式使用匿名類的編程風格不是很好,但代碼是由另一個程序生成的,而這是實現生成器的最簡單方法。
該字段不需要是最終的;這隻適用於參數/局部變量。如果他稱外場爲'y',他可以從最內層的階層進入。 – 2009-02-11 15:07:51