- - PR -
自作クラスでObjectクラスのメソッドを使用したい。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-06 21:23
わざわざcloneを実装する人が多いですね。。。
ちなみに、java.lang.Objectクラスのcloneメソッドは、 nativeで実装されていますが、内部的には (this instanceof Cloneable) == true の関係にあれば、オブジェクトの浅いコピーを行います。 逆にfalseの場合はCloneNotSupportedExceptionをスローします。 cloneをオーバーライドした時に、 return new 自分自身のクラス(); で、自分のクラスの新しいインスタンスを返す実装を行った場合ですが、 CloneNotSupportedExceptionをスローする実装が存在しない為、 Cloneableを実装する必要がありません。 あくまで、Objectクラスのcloneメソッドの呼び出すときのみ Cloneableを実装する必要があります。 当然オーバーライドしていない場合は、スーパークラスのメソッドが実行されるので、 cloneメソッドはObject#cloneとなり、Cloneableの実装が必要です。 | ||||
|
投稿日時: 2005-07-07 12:48
外部からcloneメソッドを利用するためにはpublicにする必要があるからです。 もちろんこの場合は、super.clone()呼び出すだけでもいいんですが… | ||||
|
投稿日時: 2005-07-07 12:59
あっ、protectedでしたね。。。(汗
|