java - Java 在继承结构上实现接口 Cloneable
问题描述
我的代码有以下问题:
public class Parent {
...
}
public class Child extends Parent implements Cloneable {
...
@Override
public Child clone() {
return new Child() //deep copy
}
}
以下是我的问题:
- 遵循java约定;我是否也需要为父母实现 Cloneable ?
- 我必须添加
throws CloneNotSupportedException
到 clone() 方法还是允许我把它放在一边?因为我无法捕捉到我调用克隆()的异常。
谢谢你的帮助。
编辑:我选择了复制构造函数,因为它们更容易实现和动态。
解决方案
Cloneable 是遗留的(旧的和奇怪的,应该避免未来的发展)。它不能进行深度复制,而且它的努力不值得实施。您需要使用 Jackson 或 Apache 等第三方库进行深度复制。或者您可以构建自己的深拷贝方法。
如果你已经实现了深拷贝,最好在构造函数上使用它。
public class Child extends Parent {
public Child(Child child){
this.property = child.getProperty();
// any copies
}
}
推荐阅读
- cytoscape - 富集图的文件格式
- reactjs - 尝试加载视频文件以做出反应时出现黑色视频屏幕?
- python - 如何在 tkinter 中正确使用 vartext?
- entity-framework-core - EFCore 通用存储库和 UnitOfWork 设计模式
- python - 我应该怎么做才能对每个条应用不同的颜色?
- kubernetes - ArgoCD 内核功能
- python - 在新表 pandas 数据框中合并均值和标准差
- javascript - React Project 显示空数组但包含值
- javascript - Highcharts X轴日期粗体
- python - 将 Chunks 中的 Pickle 文件读入 pandas