【发布时间】:2016-09-08 00:43:20
【问题描述】:
我试图更好地理解 Java 中匿名类的概念。从本网站的其他答案中,我了解到匿名类可以使用 OuterClass.this.myField 访问封闭类的非最终字段。
我用一个接口AnonInt 和一个类AnonTest 和一个方法foo 创建了以下简单的测试用例,该方法返回一个实现AnonInt 的匿名类的实例。尽管我使用的是System.out.println(a) 而不是System.out.println(AnonTest.this.a),但代码可以工作并打印正确的结果。这怎么可能?
public interface AnonInt {
void print();
}
public class AnonTest {
private int a;
public AnonTest(int a) {
this.a = a;
}
public AnonInt foo() {
return new AnonInt() {
public void print() {
System.out.println(a);
}
};
}
public static void main(String[] args) {
AnonTest at = new AnonTest(37);
AnonInt ai = at.foo();
ai.print();
}
}
【问题讨论】:
标签: java anonymous-class