gpt4 book ai didi

java - 为什么在使用构造函数在类中创建对象时会出现无限循环(Stackoverflow 错误)?

转载 作者:行者123 更新时间:2023-12-01 18:03:19 24 4
gpt4 key购买 nike

这是我的代码:

public class ConstructorsDemo{

public static void main(String a[]){

Cons1 c1 = new Cons1();

}

}

class Cons1{

Cons1 c = new Cons1();// the error is in this line

Cons1(){

//does somwthing

}
}

所以我在这里遇到无限循环错误(Stackoverflow)。不过,如果我注释掉我创建的两个对象中的任何一个,那就没问题了。

物体怎么样c在我的代码中导致 Stackoverflow 错误?

最佳答案

让我们看看你的类(class)。

它有一个(空)构造函数,以及一个与类相同类型的字段。

该字段是直接就地初始化的。

事情是:有一个 well-defined process在 Java 中,它规定了如何/何时调用构造函数,以及如何初始化类的字段。好吧,成员字段作为调用“new”的一部分进行初始化。

导致:当在主类中调用“new”时,应该创建并初始化一个新的 Cons1 对象。该 Cons1 对象具有 Cons1 字段。这需要用...初始化一个新的 Cons1 对象,依此类推。

这就是您在 Java 中创建第一个永无止境的递归的方式。

关于java - 为什么在使用构造函数在类中创建对象时会出现无限循环(Stackoverflow 错误)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966213/

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