如何在类中创建自身对象

时间:2022-08-30 18:04:41

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

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.*Error
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()一直执行。

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