BeanUtilsの流れるようなインターフェース
Commons-BeanUtilsの流れるようなインターフェース版を作成しました。
プロパティのコピーはこんな感じ。
特定のプロパティは除外したい場合は、excludes(String... propertyNames)を使います。
SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).execute();
特定のプロパティのみを含める場合は、includes(String... propertyNames)を使います。
Beans.copy(src, dest).excludes("hoge", "hoge2").execute();
コピー元のプロパティの値がnullの場合は、コピーしないようにするには、excludesNull()を使います。
Beans.copy(src, dest).includes("hoge", "hoge2").execute();
コピーではなくて、JavaBeansやMapを作成してプロパティの値をコピーすることもできます。
Beans.copy(src, dest).excludesNull().execute();
MyBean dest = Beans.createAndCopy(MyBean.class, src).execute();
BeanMapというのは、HashMap
BeanMap dest = Beans.createAndCopy(BeanMap.class, src).execute();
S2Dxoを使うのがなんとなく心理的に重い気がするかたは、気軽にBeansを使ってみると良いのではないかと思います。ネストしたプロパティは対象外ですが、ネストしたプロパティは、コードで明示的にコピーしたほうが、ブラックボックス感がなくてよいかもしれません。
もちろん、publicプロパティにも対応していますし、文字列から数値型や日付型への変換もサポートしています。