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();
}
}
}