我正在开发一个类库。
- 我有一个用于矩阵的抽象基类 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;
}
...
}