从Java 5开始,据说创建单例的最佳方法是使用单元素枚举类型。
示例:
public enum SuperSingleton implements Zooma{
INSTANCE;
/**
*/
public void fightTheBattle(){
System.out.println("I am fighting the battle!!!");
}
@Override
public void runningWild() {
//This is method implemented from the Zooma interface.
}
}
根据Joshua Bloch的说法,单元素枚举类型是单身;
我可以看到它是如何更简洁以及它如何提供反对多实例化的铁定, 但它如何免费提供序列化机制?
这是单身人士通过枚举得到的东西吗?
答案 0 :(得分:3)
是的,枚举全部延伸到Enum
class,后者实现了Serializable
。
答案 1 :(得分:1)
答案 2 :(得分:1)
我不是百分百肯定,但我认为如果你反序列化一个序列化单例,那么一旦你最终得到多个实例。枚举实例将永远保持单身。
所以你得到'更多序列化'然后你从实现序列化得到的。