chanting an air of joyous bliss

普段の生活で見逃しがちな面白いことを書いていく
そんなブログです

クローンメソッド

2006-12-05 12:44:34 | Java
Javaでディープコピーをしたい場合、cloneメソッドをオーバーライドするという方法がある。
この方法は、フィールドの値をコピーするロジックをいちいち手で書く必要ある。
コピーするフィールドが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);
		}
	}

この方法はこの方法で、一時ファイルを使っているので実行速度が遅くなるという欠点がある
実行速度をあまり気にしなくていい状況では使えそうだけど。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 前の記事へ | トップ | DB2クライアントからCSVファ... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Java」カテゴリの最新記事