enum实现的单例是effective java中比较推荐的做法
上代码
public class enumSingleton {
private static boolean flag = true;
private enumSingleton() {
synchronized (enumSingleton.class) {
if (flag) {
flag = !flag;
}else{
throw new Error("单例模式被侵犯!");
}
}
}
public static enumSingleton getInstance(){
return singleEnum.SINGLETON.getInstance();
}
private enum singleEnum{
SINGLETON;
private enumSingleton singleton;
//jvm保证枚举的构造方法只被调用一次
singleEnum(){
singleton = new enumSingleton();
}
private enumSingleton getInstance(){
return singleton;
}
}
}
简单测试一波