【发布时间】:2015-07-16 16:51:48
【问题描述】:
我阅读了 J.Bloch 的 Effective Java,其中写道:
如果您为继承设计一个类,请注意,如果您选择不 提供一个行为良好的受保护克隆方法,它将是 子类不可能实现 Cloneable。
我有 A 类:
public class A{}
以及扩展A类的B类:
public class B extends A implements Cloneable {
}
所以在这种情况下我不能覆盖clone() 方法?如果是,请解释原因。
【问题讨论】:
-
使用复制构造函数。
-
是的,我知道复制构造函数是复制对象的更好方法..谢谢:)
-
对于其他人:复制构造函数的替代方法是 static newInstance() 成语。但我觉得这很好奇。为什么不简单地让你的类成为自己的工厂并拥有一个非静态的
newInstance()方法呢?似乎比传入现有对象作为参数更干净;就像对象本身的副本一样(不使用损坏的clone())。 -
过去,我有一个客户需要
shallowClone()和deepClone()自定义方法,以避免javaclone()废话。他们希望它完全在他们自己的控制之下。对我来说很有意义。 -
@tgm1024 所以,在现实生活中,在所有情况下使用 clone() 方法都是个坏主意?
标签: java