gpt4 book ai didi

java - 为什么我会在这里得到 StackOverflowError?

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:38 26 4
gpt4 key购买 nike

为什么这段 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();
}
}

最佳答案

通用部分无关紧要——类是否嵌套也无关紧要。看看这对基本等价的类,它应该更明显:

public class SuperClass
{
public SuperClass()
{
new SubClass();
}
}

public class SubClass extends SuperClass
{
public SubClass()
{
super();
}
}

所以子类构造函数调用父类(super class)构造函数 - 然后创建一个新的子类,调用父类(super class)构造函数,创建一个新的子类,等等......砰!

关于java - 为什么我会在这里得到 StackOverflowError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4469843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com