一个最简单的单例:
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
return new Singleton();
}
return single;
}
}
错误原因:
if (single == null) {
return new Singleton();
}
这个地方直接return了一个实例
虽然判断了属性中的单例是不是为空
但是实例化后没有赋值给属性单例
所以一直为空,每次都会去实例化一个新的
这样就不是单例了
改正
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
实例化然后赋值给属性就可以了。