Javaでdeep copyを簡単に実現できるCloningライブラリ

Javaでdeep copyを簡単に実現できるCloningライブラリ

2012年7月24日

Javaでディープコピー(deepcopy)を実装するのは面倒くさい。

基本的にはSerializableインタフェースを実装して、適切にcloneメソッドをオーバーライドしていくのが必要。

フィールドにオブジェクト型があればそれもSerializableが必要と芋づるしきに面倒臭くなっていく。

ディープコピーが必要となったクラスが結構な規模になっていたので、Serializableでいまさらの実装は厳しく、

なにか良いライブラリがないかと探していたらcloningというライブラリが見つかった。

deepcopy関連で検索するとすぐ見つかると思うけど、Serializableインタフェース実装の必要もなくお手軽だ。

ライブラリのClonerというインスタンスを作成してdeepCloneメソッドの引数に対象のオブジェクトを入れるだけでdeepCopyが実現する。

deepCloneメソッドの前に特定クラスをdeepCopyしないようにしたりNULLに設定したりもできるようだ。

なにもしなければ当然全フィールドがdeepCloneの対象となる。

[使用例]
Cloner cloner = new Cloner();

cloner.deepClone(Object);


Cloningライブラリは下記サイトからダウンロードできる。
(現在の最新バージョンは1.8.1)

→Java cloningライブラリ

タグ