2011年2月3日木曜日

[Java]オブジェクトをディープコピーする

Object#cloneをオーバライドして実装するのはいちいち手間がかかります。
で、手っ取り早くオブジェクトをディープコピーするために、シリアライズ・デシリアライズします。コードはこんな感じ。

/**
 * ObjectOutputStreamを使ったディープイコピー
 * @param target 対象のオブジェクト
 * @return コピーしたもの
 * @throws Exception
 */

public static Object deepCopy(Object target) throws Exception {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
    oos.writeObject(target);

    ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(
            bos.toByteArray()));
    return ois.readObject();
}

0 件のコメント: