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

前端之家收集整理的这篇文章主要介绍了java – 为不可变类实现clone()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个类库.

>我有一个矩阵的抽象基类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是首选.虽然这不是一个绝对的要求,但你的计划肯定会违反这一要求.

原文链接:https://www.f2er.com/java/126146.html

猜你在找的Java相关文章