- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Java/library/commons-beanutils へ行く。
- 1 (2018-04-13 (金) 08:25:23)
- 2 (2018-04-13 (金) 08:38:58)
- 3 (2018-04-14 (土) 05:03:32)
Commons BeanUtils †
- JavaBean規約に沿ったオブジェクト操作を容易にしてくれる様々な機能を提供してくれるライブラリ
- Apache Commonsプロジェクトの1つ
インストール †
maven †
mavenでインストールする場合は、以下のような指定となる。
参考MvnRepository - on https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils
個別にjarを設置する †
jarファイルを個別にインストールする場合、1.9.3では以下のようになる。
- commons-beanutils-1.9.3.jar
- commons-logging-1.2.jar
- commons-collections-3.2.2.jar
commons-loggingやcommons-collectionsが必要となる。commons-collectionsは、4からgroupとartifactが変更されているので注意する。1.9.3では、commons-collectionsを利用する。
例 †
/* * 1. Mapの配列を扱う */ System.out.println("[1]"); // Mapの配列を作成 HashMap[] myMapArray = new HashMap[1]; myMapArray[0] = new HashMap<String, Object>(); myMapArray[0].put("name", "mapValue"); // Mapの配列を追加して初期化 LazyDynaList lazyList = new LazyDynaList(myMapArray); // リサイズ時に失敗しないように要素のタイプを指定しておく。 // この指定がないと、すでに要素がある状態でelementTypeを設定しようとしてエラーとなる。(この時点では、まだelementTypeがない) // DynaClassはLazyDynaMapであり、このDynaClassはMap型のオブジェクトを生成して返す。 lazyList.setElementType(HashMap.class); //lazyList.setElementType(TreeMap.class); // サイズ拡張で、新しい要素オブジェクトを得る、LazyDynaMap型である。 DynaBean newElement = (DynaBean) lazyList.get(lazyList.size()); newElement.set("name", "arrayValue"); DynaBean element = (DynaBean) lazyList.get(lazyList.size() - 1); System.out.println(element.get("name")); Map<String, String>[] maps = (Map<String, String>[]) lazyList.toArray(); Arrays.stream(maps).forEach(m -> { m.forEach((k, v) -> System.out.println(k + ":" + v)); }); /* * 2. Listを扱う */ System.out.println("[2]"); List<Map<String, String>> myList = new ArrayList<>(); lazyList = new LazyDynaList(myList); // サイズ拡張, elementTypeはLazyDynaBeanである newElement = (DynaBean) lazyList.get(lazyList.size()); newElement.set("name", "listValue"); element = (DynaBean) lazyList.get(lazyList.size() - 1); // この時点でelementTypeはLazyDynaBeanとなっている。 System.out.println(element.get("name")); // elementTypeのオブジェクトを追加する。 LazyDynaBean newBean = new LazyDynaBean(); newBean.set("name", "elementValue"); lazyList.add(newBean); element = (DynaBean) lazyList.get(lazyList.size() - 1); System.out.println(element.get("name")); // LazyDynaBeanでない型の追加はエラーとなる。 HashMap<String, Object> map = new HashMap<String, Object>(); lazyList.add(map); // Exception in thread "main" java.lang.IllegalArgumentException: Element Type class java.util.HashMap doesn't match other elements class org.apache.commons.beanutils.LazyDynaBean /* [1] arrayValue name:mapValue name:arrayValue [2] listValue elementValue Exception in thread "main" java.lang.IllegalArgumentException: Element Type class java.util.HashMap doesn't match other elements class org.apache.commons.beanutils.LazyDynaBean at org.apache.commons.beanutils.LazyDynaList.transform(LazyDynaList.java:689) at org.apache.commons.beanutils.LazyDynaList.add(LazyDynaList.java:288) at cb.LazyDynaListSample.main(LazyDynaListSample.java:122) */
参考 Maven Repository
- commons-beanutils - on https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils
- commons-logging - on https://mvnrepository.com/artifact/commons-logging/commons-logging
- commons-collections - on https://mvnrepository.com/artifact/commons-collections/commons-collections