加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为不可变类实现clone()

发布时间:2020-05-24 02:37:01 所属栏目:Java 来源:互联网
导读:我正在开发一个类库. 我有一个矩阵的抽象基类Matrix,它提供了一些基本方法的实现. 派生自Matrix是不同类型矩阵的具体子类. 我要求矩阵可以克隆,因此Matrix实现了Cloneable接口. 从Matrix派生的一些类是不可变的 对于不可变类的克隆方法而言,它是否可以接受而

我正在开发一个类库.

>我有一个矩阵的抽象基类Matrix,它提供了一些基本方法的实现.
>派生自Matrix是不同类型矩阵的具体子类.
>我要求矩阵可以克隆,因此Matrix实现了Cloneable接口.
>从Matrix派生的一些类是不可变的

对于不可变类的克隆方法而言,它是否可以接受而不是返回对象的克隆,而是返回对象本身?

一些(过于简化的)代码用于澄清:

abstract class Matrix implements Cloneable {
   ...
}

class ImmutableMatrix extends Matrix {
    ImmutableMatrix clone() {
        return this;
    }
    ...
}

class SomeOtherMatrix extends Matrix {
    SomeOtherMatrix clone() {
        SomeOtherMatrix other = super.clone();
        ...
        return other;
    }
    ...
}

解决方法

我本以为调用super.clone()就足够了.

如果你的类是不可变的,那么在构造它时它应该已经克隆了任何可变类.因此,我认为你的班级有任何领域的浅拷贝是安全的.

JavaDocs声明x.clone()!= x是首选.虽然这不是一个绝对的要求,但你的计划肯定会违反这一要求.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读