众所周知,它Cloneable
已无法修复(有关更多信息,请参阅此问题中的讨论)。
关于替代方案和“我如何正确地做”的最后一个问题是几年前的:
- 有没有其他方法可以在 Java 中实现克隆?
- 如何正确覆盖克隆方法?
- Clone() vs Copy constructor - 在java中推荐
- 克隆() vs 复制构造函数 vs 工厂方法?
- Java中的多态副本
- 使用复制构造函数而不是 Object.clone 进行深度复制的正确方法
所以我想再问一遍:
什么是现代(2014 年)的替代品Cloneable
?
我正在寻找一个通用的解决方案。我可以想象以下要求:
Copyable
类将实现的某种接口:A extends Copyable
.- 深度复制。如果一个 istance
A
引用了 的一个实例B
,a.copy()
则应该引用一个新的b.copy()
. - 复制到指定目标:
a.copyTo(a1)
. - 多态复制:如果
B
extendsA
then应该复制from toa.copyTo(b)
的所有属性。B
a
b
当然我可以自己实现所有这些,但是为此拥有标准接口不是很合理吗?还是我错过了什么?
我的上下文的一些背景。我经常使用 JAXB 和模式派生类。对这些类进行深度复制通常非常有用。几年前,我编写了几个 JAXB 模式编译器插件来生成copyTo
实现上述(以及更多)要求的方法。我不得不使用我自己的运行时 API。现在我正在重新审视这个案例,并决定询问是否有标准解决方案。