Rom*_*man 3 java stack-overflow generics recursion
为什么这个java代码会产生StackOverflowError
?我知道这与递归泛型类型参数有某种联系.但我不明白整个机制.
public class SomeClass<T extends SomeClass> {
SomeClass() {
new SomeClassKiller();
}
private class SomeClassKiller extends SomeClass<T> {
}
public static void main(String[] args) {
new SomeClass();
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
通用部分无关紧要 - 类嵌套也不重要.看看这个大多数等价的一对类,它应该更加明显:
public class SuperClass
{
public SuperClass()
{
new SubClass();
}
}
public class SubClass extends SuperClass
{
public SubClass()
{
super();
}
}
Run Code Online (Sandbox Code Playgroud)
所以子类构造函数调用超类构造函数 - 然后创建一个新的子类,调用超类构造函数,创建一个新的子类,等等......砰!
归档时间: |
|
查看次数: |
188 次 |
最近记录: |