【发布时间】:2013-03-25 06:51:20
【问题描述】:
我需要为我的班级配备多态克隆(深拷贝),即我需要这样的东西才能工作:
SuperType original = new SubType();
SuperType copy = original.clone();
其中original.clone()可以被任何机制替换以创建深拷贝,copy的实际类型应为SubType,因为original也是SubType。
clone() 方法和Cloneable 接口是实现此目的的唯一方法吗?工厂方法和复制构造函数不能被使用,因为实际的类只在运行时才知道,对吧?除了那些 serialize-deserialize 方法和 Java deep-cloning library 之外还有其他建议的方法吗? 恕我直言,它比 clone() 方法更糟糕?
谢谢,彼得
【问题讨论】:
-
你不能做一个你想被克隆的对象可以传递给的构造函数?
-
@gangqinlaohu 当然,我可以,但是我需要打电话给
new SubType(original),因为我在编写代码时不知道原始是否真的属于SubType,或者SubType2,或SubSubType。
标签: java clone deep-copy cloneable