如何在类中创建自身对象

这个问题似乎很简单,下面的代码好像就可以

package test;

public class B {

    B b = new B();

    static {
        System.out.println("类初始化块");
    }

    {
        System.out.println("实例初始化块");
    }

    public B(){
        System.out.println("对象初始化");
    }

    public static void main(String[] args) {
        new B();

    }

}

当你运行之后,你会发现一下异常:

类初始化块
Exception in thread "main" java.lang.StackOverflowError
    at test.B.<init>(B.java:15)
    at test.B.<init>(B.java:5)
    at test.B.<init>(B.java:5)
    at test.B.<init>(B.java:5)
        ......

很明显这是一个递归没有边界导致的异常,执行main方法new B()时B b= new B()执行,导致B b = new B()一直执行。

如何解决这个问题呢?我想到了单例模式,不知道还有什么方法?

原文地址:https://www.cnblogs.com/fzqm/p/6821980.html