繁体   English   中英

Java 在 inheritance 结构上实现接口 Cloneable

[英]Java implementing interface Cloneable on a inheritance structure

我的代码有以下问题:

public class Parent {
    ...
}

public class Child extends Parent implements Cloneable {
    ...
    @Override
    public Child clone() {
        return new Child() //deep copy
    }
}

以下是我的问题:

  1. 遵循 java 约定; 我是否也需要为父母实现 Cloneable ?
  2. 我是否必须将throws CloneNotSupportedException添加到 clone() 方法中,还是允许我将其放在一边? 因为我无法捕捉到我调用克隆()的异常。

谢谢你的帮助。

编辑:我选择了复制构造函数,因为它们更容易实现和动态。

Cloneable 是遗留的(旧的和奇怪的,应该避免未来的发展)。 它不能进行深度复制,而且它的努力不值得实施。 您需要使用像 Jackson 或 Apache 这样的第三方库来进行深度复制。 或者您可以构建自己的深拷贝方法。

如果你已经实现了深拷贝,最好在构造函数上使用它。

public class Child extends Parent {
    public Child(Child child){
        this.property = child.getProperty();
        // any copies
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM