Javaでディープコピーをしたい場合、cloneメソッドをオーバーライドするという方法がある。
この方法は、フィールドの値をコピーするロジックをいちいち手で書く必要ある。
コピーするフィールドが5つぐらいだったらいい。
が、コピー対象のフィールドが20~30になるとそのロジックを書かなければいけないと考えるだけで気が滅入る。
何かいい方法はないかと同僚に聞くと↓の方法を教えてもらった
この方法はこの方法で、一時ファイルを使っているので実行速度が遅くなるという欠点がある
実行速度をあまり気にしなくていい状況では使えそうだけど。
この方法は、フィールドの値をコピーするロジックをいちいち手で書く必要ある。
コピーするフィールドが5つぐらいだったらいい。
が、コピー対象のフィールドが20~30になるとそのロジックを書かなければいけないと考えるだけで気が滅入る。
何かいい方法はないかと同僚に聞くと↓の方法を教えてもらった
public Object clone() { 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 e) { throw new RuntimeException(e); } }
この方法はこの方法で、一時ファイルを使っているので実行速度が遅くなるという欠点がある
実行速度をあまり気にしなくていい状況では使えそうだけど。