访问外部匿名类的领域从内部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