【发布时间】:2011-12-02 10:59:16
【问题描述】:
这是我遇到的一件有趣的小事。我在搞乱匿名类型,我写了类似的东西:
public class Test {
public static void method(Object obj) {
System.out.println(obj.getClass().getName());
}
public static void main(String[] args) {
method(new Object() {
int n = 0;
});
}
}
好吧,当打印的结果实际上是 test.Test$1 这是定义匿名对象的类的名称时,我感到非常惊讶(如果您将打印类型名称的方法移动到另一个,它仍然是相同的班级)。
有人可以解释这种行为吗?这是 Java 标准中指定的还是另一种“未定义的行为”?
【问题讨论】:
-
您究竟关心哪种行为?
-
这实际上是一种众所周知的行为。匿名类也有名称,因为编译器需要以某种方式了解这些类型......
-
否
undefined behaviorin java