【发布时间】:2009-11-26 12:49:06
【问题描述】:
现在改变问题为时已晚,但更准确的应该是问“为什么 clone() 不允许单例?”。 copy() 方法会更方便。
Java中的枚举不能被克隆有什么原因吗?
手册指出
这保证了枚举永远不会被克隆,这是保持它们的“单例”状态所必需的。
但返回实例本身也会保留其状态,并且我可以像处理其他可克隆对象一样处理关联的枚举。
有人可能会说
[clone()] 的一般意图是,对于任何对象 x,表达式:
x.clone() != x是真的,[...]
但对于单身人士,我希望x.clone() == x 是真的。如果实例本身会被返回,那么单例模式将对引用对象透明。
那么当指定clone() 时,为什么不允许克隆枚举,或者他们忘记考虑单例和不可变?
【问题讨论】:
-
有了枚举,有什么可以克隆的?