這個Java代碼爲什麼產生StackOverflowError
?我明白,這與某種方式與遞歸泛型類型參數相關聯。但我不明白整個機制。爲什麼我在這裏得到StackOverflowError?
public class SomeClass<T extends SomeClass> {
SomeClass() {
new SomeClassKiller();
}
private class SomeClassKiller extends SomeClass<T> {
}
public static void main(String[] args) {
new SomeClass();
}
}
您是否看過錯誤的堆棧跟蹤?這應該讓你知道發生了什麼。它與類型參數沒有任何關係 - 如果刪除它們,它仍會給出一個'StackOverflowError'。 – Jesper 2010-12-17 11:03:32
在stackoverflow上的好問題。 (: – 2010-12-17 11:03:44
@Jesper:SomeClassKiller正在初始化無限次數,但我不明白爲什麼。 – Roman 2010-12-17 11:04:41