で、手っ取り早くオブジェクトをディープコピーするために、シリアライズ・デシリアライズします。コードはこんな感じ。
/**
* 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();
}
* 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 件のコメント:
コメントを投稿