|
BeanUtils - Commons はApache CommonsのライブラリでJavaBeans?のプロパティをコピーする便利なメソッドなどが用意されたユーティリティです。 似たようなプロパティをもつ別のクラス、たとえばStrutsのActionForm?を別のオブジェクトに移し替えるときや、DBのEntityからUI側のオブジェクトに載せ替えたいときなどに、 SrcBean src = ... DestBean dest = new DestBean(); PropertyUtils.copyProperties(dest, src); などとするだけで、同じ名称のプロパティを移し替えてくれたりします。 ダウンロード †Beanutils Downloads よりダウンロードできます。またProject Dependenciesを見ると
なども必要みたいですね。 やってみる †SrcBean?のプロパティをDestBean?へ載せ替えることを考えてみます。 package src;
public class SrcBean {
private String message;
private boolean[] boolArray;
private List list;
private Map map;
.... Getter/Setterは削除
}
package dest;
public class DestBean {
private String message;
private boolean[] boolArray;
private List list;
private Map map;
.... Getter/Setterは削除
@Override
public String toString() {
return new ToStringBuilder(this).append("message", message).append(
"booleanArray", boolArray).append("list", list).append("map",
map).toString();
}
}
この例ではSrcBean?もDestBean?も同じプロパティを持っているとしています。 各プロパティの値を載せ替えるコードは以下の通りです。 public class Main {
public static void main(String[] args) throws IllegalAccessException,
InvocationTargetException, NoSuchMethodException {
SrcBean src = new SrcBean();
src.setMessage("ほげほげ");
boolean[] boolArray = new boolean[] { true, false, true };
src.setBoolArray(boolArray);
List<String> list = new ArrayList<String>();
list.add("first");
list.add("second");
src.setList(list);
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("chars", new char[] { 'a', 'b' });
src.setMap(map);
DestBean dest = new DestBean();
PropertyUtils.copyProperties(dest, src);
System.out.println(dest);
}
}
実行結果は以下の通り。 dest.DestBean@bb0d0d[
message=ほげほげ,
booleanArray={true,false,true},
list=[first, second],
map={
chars=[C@2c1e6b,
arr=[Ljava.lang.String;@811c88,
int=1,
bool=true,
name=json
}
] 整形してます
SrcBean?のプロパティがコピーされていることが確認できました。 コンテンツ一覧 †関連リンク †この記事は 現在のアクセス:9610 |