【问题标题】:Stack overflow error in recursive definition递归定义中的堆栈溢出错误
【发布时间】: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 块只被调用一次,那么就没有递归,对吧?而如果为实例调用构造函数,那么它将无限期地被调用。

标签: java recursion enums


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 2014-08-27
    • 2016-11-11
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多