现在改变问题已经太晚了,但更准确的是问“为什么clone()不允许单例?”。 Acopy()
方法会更方便。
Java 中的枚举无法克隆有什么原因吗?
该手册指出
这保证了枚举永远不会被克隆,这是保持其“单例”状态所必需的。
但是返回实例本身也将保留其状态,并且我将能够像其他可克隆对象一样处理关联的枚举。
有人可能会争辩说
[clone()] 的一般意图是,对于任何对象 x,表达式:x.clone() != x
将是真的,[...]
但对于单身人士来说,相反我想要x.clone() == x
是真实的。如果返回实例本身,那么单例模式对于引用对象来说将是透明的。
那么为什么枚举不允许被克隆,或者他们忘记考虑单例和不可变,当clone()
被指定?
如果克隆单例的目的是什么x.clone() == x
?你不能只用x
马上。
严格来说,如果你想克隆一些东西and执行x.clone() == x
,唯一可以作为克隆结果的对象是x
itself:
def clone() {
return this;
}
这可能会产生误导......
如果您正在设计某些东西并且基于clone()
为了区分,恕我直言,你做错了......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)