递归定义中的堆栈溢出错误

问题描述 投票:0回答:1

我的班级定义为JAVA。

class ABC 
{ 
    public static final ABC A = new ABC();
    public static final ABC B = new ABC();
}

当我调用new ABC()时,它运行正常,没有任何错误。但是,如果我删除“静态”一词,则会遇到堆栈溢出错误。我知道静态字段会被初始化一次。但是在这种情况下,初始化本身是递归的。因此,理想情况下,即使具有静态属性,也应给出相同的错误。有人可以解释一下吗?谢谢!

java recursion enums
1个回答
1
投票

您亲自回答了这个问题:静态字段只初始化一次。这就是为什么代码不会进行无限递归的原因。您可以自己附加调试器来检查这一事实:)

© www.soinside.com 2019 - 2024. All rights reserved.