這是我遇到的一件有趣的小事。我用匿名類型瞎搞,我寫的是這樣的:匿名類型
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' –