这是我遇到的一件有趣的小事。我用匿名类型瞎搞,我写的是这样的:匿名类型
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标准中指定的还是另一个“未定义的行为”?
哪些行为到底是你不担心? –
这实际上是一个众所周知的行为。匿名类也获取名称,因为编译器需要以某种方式知道这些类型...... – DejanLekic
**否java中的'undefined behavior' –