- PR -

自作クラスでObjectクラスのメソッドを使用したい。

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 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の実装が必要です。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-07-07 12:48
引用:

かつのりさんの書き込み (2005-07-06 21:23) より:
わざわざcloneを実装する人が多いですね。。。


外部からcloneメソッドを利用するためにはpublicにする必要があるからです。
もちろんこの場合は、super.clone()呼び出すだけでもいいんですが…
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-07 12:59
あっ、protectedでしたね。。。(汗

スキルアップ/キャリアアップ(JOB@IT)