微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 在继承结构上实现接口 Cloneable

如何解决Java 在继承结构上实现接口 Cloneable

我的代码有以下问题:

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() 方法还是允许我将其放在一边?因为我无法捕捉到我调用 clone() 的异常。

感谢您的帮助。

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

解决方法

Cloneable 是遗留问题(古老而怪异,应避免在未来开发中使用)。它不能做深拷贝,而且它的努力不值得去实现。您需要使用 Jackson 或 Apache 等 3rd 方库来进行深度复制。或者您可以构建自己的深度复制方法。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。