今天调试程序遇到的问题:
public class Singleton{
private class A a;
public Singleton(){
a = new A();
}
private static Singleton singleton = new Singleton;
public static Singleton getInstance(){
return singleton;
}
}
public class A{
private Singleton singleton;
public A(){
singleton = Singleton.getInstance();
}
void execute(){
singleton.....
}
}
这段程序,在调用A的execute函数是,singleton将抛出NullPointerExceptioin。
原因在于:Singleton在创建的时候,new一个a的时候,a的初始化又依赖于singleton的初始化,导致A的singleton没能正确初始化,实际上还是null。
这段程序,还有一个致命的错误,就是循环依赖。这是由于设计不良的原因。