java - 实例化对象时出现 StackOverFlow 错误

标签 java static constructor stack-overflow

我正在复习认证考试,并尝试了以下代码:

class A {   
    B b = new B();
    static {
        System.out.println("A static.");
    }
    {
        System.out.println("A instance.");
    }
    A() {
        System.out.println("A constructor.");
    }
}
class B extends A {
    static {
        System.out.println("B static.");
    }
    {
        System.out.println("B instance.");
    }
    B() {
        System.out.println("B constructor.");
    }
}

public class Raaawrrr {
    public static void main(String args[]) {
        A a = new A();
    }
}

它打印:

静电。 B 静态。

并随后导致堆栈溢出。我很难理解为什么。你能帮我一下吗?

最佳答案

A 实例化 B。B 恰好也是 A 类型,因此会再次实例化。它实例化了 B...等等。

关于java - 实例化对象时出现 StackOverFlow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135976/

相关文章:

c# - 在子类中更改静态变量而不在父类中更改它

c++ - 对静态变量 c++ 的 undefined reference

c++ - 除非同时构建,否则无法在 3d map 中分配值

java - 如何在 spring-security 中取消/** URL 模式

java - 是否可以在没有JCO的情况下连接SAP服务器和JAVA?

Java 泛型和 C++ 模板,如果生成的代码大小很重要,哪个是首选?

java - 如何使用 hibernate 按列分组并检索所有列

c++ - 在 C++ 的 python 类中指定静态变量

c++ - 为什么不能将继承的 protected 构造函数公开?

c++ - 谁能解释一下这个 C++ 引用用法