0

我有类定义n JAVA。

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

当我调用 new ABC() 时,它运行良好,没有任何错误。但是如果我删除静态这个词,它会遇到堆栈溢出错误。我知道静态字段会启动一次。但在这种情况下,初始化本身是递归的。所以理想情况下,即使使用静态属性,它也应该给出相同的错误。你能解释一下吗。谢谢!

4

1 回答 1

1

您自己回答了这个问题:静态字段启动一次。这正是代码不会进入无限递归的原因。您可以自己附加调试器来检查这个事实:)

于 2019-10-18T05:42:37.257 回答