【发布时间】:2019-10-18 13:42:37
【问题描述】:
我有类定义 n JAVA。
class ABC
{
public static final ABC A = new ABC();
public static final ABC B = new ABC();
}
当我调用 new ABC() 时,它运行良好,没有任何错误。 但是如果我删除静态这个词,它会遇到堆栈溢出错误。我知道静态字段会启动一次。但在这种情况下,初始化本身是递归的。所以理想情况下,即使使用静态属性,它也应该给出相同的错误。你能解释一下吗。谢谢!
【问题讨论】:
-
你为什么做这个假设?如果
static块只被调用一次,那么就没有递归,对吧?而如果为实例调用构造函数,那么它将无限期地被调用。