我需要为我的班级配备多态克隆(深拷贝),即我需要这样的东西才能工作:
SuperType original = new SubType();
SuperType copy = original.clone();
whereoriginal.clone()
可以被任何机制替代以创建深层副本,并且实际类型copy
应为SubType
,因为original
也是SubType
.
clone()
方法和接口是Cloneable
实现这一目标的唯一方法吗?工厂方法和复制构造函数不能被使用,因为实际的类只在运行时才知道,对吧?除了那些序列化反序列化方法以及恕我直言的Java深度克隆库比该方法更糟糕的黑魔法之外,还有其他建议的clone()
方法吗?
谢谢,彼得