程序运行的时候会产生一个栈溢出的异常,如下:
Exception in thread "main" java.lang.StackOverflowError
你在main()方法中创建一个Demo对象,而Demo对象在初始化成员变量的时候,又要去创建一个Demo对象,从而产生死循环,导致栈溢出。
联想到单例模式,可以发现,当成员变量是自身对象的时候,通常不初始化,只是一个定义,而在方法中对其进行赋值,这样就不会产生溢出了,具体如下:
class Demo
{
Demo d;
Demo()
{
System.out.println("demo run");
}
public void setDemo() {
d = new Demo();
}
} |