クラスライブラリを開発しています。
- 基本的なメソッドのいくつかの実装を提供する、行列の抽象基本クラス Matrix があります。
- Matrix から派生するのは、さまざまなタイプの行列の具体的なサブクラスです。
- 行列を複製可能にする必要があるため、Matrix は Cloneable インターフェイスを実装します。
- Matrix から派生したクラスの一部は不変です
オブジェクトのクローンを返す代わりに、オブジェクト自体が返されることは、不変クラスの clone メソッドに受け入れられるでしょうか?
明確化のためのいくつかの(単純化された)コード:
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;
}
...
}