とらねこ&いがぴょん合コン@東京銀座

http://homepage2.nifty.com/igat/igapyon/diary/2004/ig040203.html
いろいろな話が聞けてとても楽しかったです。とらねこさん、いがぴょんさん、そしてみなさんありがとうございました。そしてはてなダイアリーに感謝、です。
「家について日記を書くまでがOFF会」ということなので、いまやっと私のOFF会は終わったことになります。ふぅ。

CloneableインタフェースとObject.clone()

合コンフォローその2。Cloneableなクラスでメソッドclone()はオーバーライドすべきかという話題です。

ごめんなさい、ワタシ間違ってました。Object.clone()はshallowCopyだとはっきり書いてありました。
以下サンのJ2SDKドキュメント引用です。
まずCloneableインタフェースですが

従来、このインタフェースを実装するクラスは、public メソッドで 
Object.clone (protected) をオーバーライドする必要があります。
このメソッドのオーバーライドに関する詳細は、 Object.clone() 
を参照してください。 

「従来」というのが何を意味するのか、今ひとつ不明なのですが、(英語版見ろよ>俺)
やはりclone()はオーバーライドしなさいということのようです。

次にObject.clone()ですが、

Object クラスの clone メソッドは、特定の複製処理を実行します。
まず、このオブジェクトのクラスが Cloneable インタフェースを
実装していない場合は、CloneNotSupportedException がスロー
されます。配列はすべて、インタフェース Cloneable を実装して
いるものと見なされることに注意してください。実装していない場合、
このメソッドはこのオブジェクトのクラスの新しいインスタンスを
生成し、そのフィールドをすべて、このオブジェクトの対応する
各フィールドの内容で初期化します。これは代入と同様で、フィールド
の内容自身が複製されるのではありません。つまりこのメソッドは、
オブジェクトのシャローコピーを生成しますが、ディープコピーは
生成しません。 

あ、しっかりシャローコピーと書いてある。一応デフォルトのclone()を使うことも(シャローコピーであることを考慮すれば)いけないことではなさそうです。
ただ、ワタシ的には「オブジェクトの複製方法はそのクラス自身が決めるべきである」と思いますのでCloneableなクラスではclone()を実装すべき、と考えています。

占い

http://laos.press.ne.jp/kaonasi/kaonashitest.html
やってみた。

あなたの性格はリンです。

大事な人はしっかりと護り、気に入らない人はきっぱりと否定する。
故に気付くと敵が多くなってしまうタイプがあなたです。それでも
あなたの周りに集まってくる人は明るく優しい人ばかり。ただ、
ときに厄介な人間に好かれてしまったり、面倒を押し付けられたりと、
波乱万丈な人生を歩んでいます。あなたはそんな過去を愚痴ってしまう
こともあるでしょうが、よく考えるとそんな人生もなかなか楽しいもの
だ…と、半分開き直っています。逆に考えずとも無敵なあなたです。  

リンって誰だ?