我的班级定义为JAVA。
class ABC
{
public static final ABC A = new ABC();
public static final ABC B = new ABC();
}
当我调用new ABC()时,它运行正常,没有任何错误。但是,如果我删除“静态”一词,则会遇到堆栈溢出错误。我知道静态字段会被初始化一次。但是在这种情况下,初始化本身是递归的。因此,理想情况下,即使具有静态属性,也应给出相同的错误。有人可以解释一下吗?谢谢!
您亲自回答了这个问题:静态字段只初始化一次。这就是为什么代码不会进行无限递归的原因。您可以自己附加调试器来检查这一事实:)