从Java1.5开始,可以使用枚举类型实现单例。
public class EnumSingleton {
public static EnumSingleton getInstance() {
return Elvis.INSTANCE.getInstance();
}
private enum Elvis {
INSTANCE;
private EnumSingleton singleton;
Elvis() {
singleton = new EnumSingleton();
}
private EnumSingleton getInstance() {
return singleton;
}
}
}
Elvis 下的INSTANCE可以替换为其他命名规范的单词,不一定是INSTANCE,但是为了书写规范,建议写成INSTANCE。
外部调用方法:
EnumSingleton enumSingleton = EnumSingleton.getInstance();
扩展一下,我们可以利用枚举的这种特性,在枚举的构造函数里初始化一些数据。