ひがやすを技術ブログ

電通国際情報サービスのプログラマ

BeanUtilsの流れるようなインターフェース

Commons-BeanUtilsの流れるようなインターフェース版を作成しました。
プロパティのコピーはこんな感じ。


SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).execute();
特定のプロパティは除外したい場合は、excludes(String... propertyNames)を使います。

Beans.copy(src, dest).excludes("hoge", "hoge2").execute();
特定のプロパティのみを含める場合は、includes(String... propertyNames)を使います。

Beans.copy(src, dest).includes("hoge", "hoge2").execute();
コピー元のプロパティの値がnullの場合は、コピーしないようにするには、excludesNull()を使います。

Beans.copy(src, dest).excludesNull().execute();
コピーではなくて、JavaBeansやMapを作成してプロパティの値をコピーすることもできます。

MyBean dest = Beans.createAndCopy(MyBean.class, src).execute();

BeanMap dest = Beans.createAndCopy(BeanMap.class, src).execute();
BeanMapというのは、HashMapなクラスで存在しないプロパティをgetすると例外が飛ぶようになっています。
S2Dxoを使うのがなんとなく心理的に重い気がするかたは、気軽にBeansを使ってみると良いのではないかと思います。ネストしたプロパティは対象外ですが、ネストしたプロパティは、コードで明示的にコピーしたほうが、ブラックボックス感がなくてよいかもしれません。
もちろん、publicプロパティにも対応していますし、文字列から数値型や日付型への変換もサポートしています。