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?のプロパティがコピーされていることが確認できました。 コンテンツ一覧 †関連リンク †この記事は 現在のアクセス:9272 |