这个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