枚举类型被认为是实现单例的最佳方式之一,其中一个原因是它隐式地继承了Serializable
接口。
但是,枚举类型又如何防止单例的反序列化问题呢?
枚举类型被认为是实现单例的最佳方式之一,其中一个原因是它隐式地继承了Serializable
接口。
但是,枚举类型又如何防止单例的反序列化问题呢?
readResolve()
方法,传统的单例可以被成功反序列化。有关示例,请参见http://www.oodesign.com/singleton-pattern.html。将枚举用作单例模式的参数是无意义的。
如果枚举单例具有状态,那么在序列化/反序列化期间状态会丢失。
如果单例是无状态的,那么谁关心它的身份?
if (someVar == SomeSingleton.INSTANCE)
,那么您真正关心它的身份。 - JB Nizet