JavaBean?に、clone()メソッドを実装する為には、全てのフィールド変数をDeep Copyしてやる必要があり結構大変。
ところが、このJavaBean?がSerialize出来れば事は簡単。Serializeして(つまりはbyte[]にして)再びObjectに戻してやればいい。

 public class Foo
   implements Serializable, Cloneable {
  
  private int a;
  private String b;
  private Double c;
 
   /**
    * このオブジェクトのCloneメソッドです.
    * @return このオブジェクトのColne(DeepCopy)
    * @throws CloneNotSupportedException Cloneを作成出来なかった
    */
   public final Object clone() throws CloneNotSupportedException {
     try {
       ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
       ObjectOutputStream oos = new ObjectOutputStream(bos);
 
       oos.writeObject(this);
 
       ObjectInputStream ois =
         new ObjectInputStream(
           new ByteArrayInputStream(bos.toByteArray()));
 
       return ois.readObject();
     } catch (Exception ex) {
       // Should not happen
       throw new CloneNotSupportedException();
     }
   }
 }

Java#JavaSE


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2006-02-23 (木) 13:06:11 (6637d)
Short-URL:
ISBN10
ISBN13
9784061426061