枚举的用法
每个枚举变量其实都是枚举类的一个实例。
枚举与单例
各种模式的单例模式,包括枚举实现的单例
//懒汉模式
class SingletonA {
private static SingletonA instance = new SingletonA();
//保证不能通过new SingletonB的方式创建对象
private SingletonA(){}
public static SingletonA getInstance() {
return instance;
}
}
//保证效率的懒加载
class SingletonB {
private static SingletonB instance;
private SingletonB(){}
public static SingletonB getInstance() {
if(instance == null) {
synchronized (SingletonB.class) {
if (instance == null) {
instance = new SingletonB();
}
}
}
return instance;
}
}
//内部类懒汉模式
class SingletonC {
private SingletonC(){}
private static class SingletonHolder {
private static final SingletonC instance = new SingletonC();
}
public SingletonC getInstance() {
return SingletonHolder.instance;
}
}
//内部枚举类懒加载模式
class SingletonD {
private SingletonD(){}
private enum EnumSingleton {
instance;
//因为枚举变量是static