在 Java 中可以使匿名类具有新字段:
class A {
public static void main(String[] args) {
Object o = new Object() {
public int x = 0;
{
System.out.println("x: " + x++);
System.out.println("x: " + x++);
}
};
System.out.println(o.x);
}
}
但在此示例中无法访问它们,因为它们o
的类型为Object
:
$ javac A.java && java A
A.java:10: cannot find symbol
symbol : variable x
location: class java.lang.Object
System.out.println(o.x);
^
1 error
请注意,o
它实际上不是Object
,它是扩展的不同类的实例Object
。这个类有一个公共字段x
。这个类有名字吗?我怎样才能o
成为正确的类型,以便我可以访问o.x
?(请注意,可以使用反射来做到这一点,但我想静态地做到这一点)。