Java-beanutils-dynamic-beans-lazy-dynabeans

提供:Dev Guides
移動先:案内検索

Java BeanUtils-遅延DynaBeans

説明

レイジーダイナビーンズはダイナビーンの実装であり、レイジーリストとレイジーマップの特性を提供し、これによりダイナクラスのプロパティが接続されます。 Lazy DynaBeansには4つのタイプがあります。

  • LazyDynaBean :名前とデータ型の動的に変更されたプロパティを提供するレイジーDynaBeanを指定します。
  • LazyDynaMap :遅延マップまたはリストシステムを使用してマップするDynaBeanの軽量実装を提供します。
  • LazyDynaList :DynaBean、Map、またはPOJOS(通常のJavaクラスを指定するプレーンオールドJavaオブジェクト)のリストを提供します。
  • LazyDynaClass :MutableDynaClassインターフェイスを実装します。

Lazy DynaBeansの機能は次のとおりです。

  • * Lazyプロパティの追加*:setメソッドが呼び出されたときに自動的にプロパティをDynaClassに追加するためにLazy Beanによって使用され、DynaClassのプロパティを追加または削除する機能があります。
  • レイジーリスト/配列の成長:インデックス付きプロパティが設定されているインデックスに対応できない場合、レイジーリストまたは配列は自動的に成長します。
  • 遅延リスト/配列のインスタンス化:インデックス付きプロパティが存在しない場合、DynaBeanのインデックス付きプロパティのgetterおよびsetterメソッドは、遅延リストまたは配列のインスタンス化になります。 インデックス付きプロパティが定義されていない場合、DynaClassに自動的に追加され、デフォルトのList実装がインスタンス化されます。
  • レイジーマップのインスタンス化:マップされたプロパティが存在しない場合、DynaBeanのマップされたプロパティのgetterおよびsetterメソッドはレイジーマップのインスタンス化を行います。 マップされたプロパティが定義されていない場合、DynaClassに自動的に追加され、デフォルトのMap実装がインスタンス化されます。
  • * Lazy Beanのインスタンス化*:_DynaClass_プロパティがDynaBeanまたは通常のBeanとして定義され、DynaBeanに存在しない場合、LazyDynaBeanはデフォルトの空のコンストラクターを使用してBeanをインスタンス化します。

LazyDynaBean

これは、名前とデータ型の動的に変更されたプロパティを提供するレイジーDynaBeanを指定する標準レイジーBeanの実装です。 _LazyDynaClass_と関連付けることにより、_MutableDynaClass_インターフェースを実装します。 以下の簡単なコードは、ゲッターまたはセッターを使用したLazyDynaBeanの使用法を示しています。

 DynaBean dynaBean = new LazyDynaBean();
 dynaBean.set("company", "Model");           //simple

 dynaBean.set("customer", "fname", "Steve"); //mapped
 dynaBean.set("customer", "lname", "Smith"); //mapped

 dynaBean.set("address", 0, addressLine1);   //indexed
 dynaBean.set("address", 1, addressLine2);   //indexed

LazyDynaMap

遅延マップまたはリストシステムを使用してマップするDynaBeanの軽量実装を提供し、DynaClassのプロパティには関連付けません。 それ自体がDynaClassインターフェースを実装し、マップのコンテンツからDynaClassの情報を取得します。 LazyDynaMapは、インスタンス化して独自のマップを作成するか、既存のマップの周囲に生成できます。

以下のコードは、新しいマップの作成を示しています。

 DynaBean dynaBean = new LazyDynaBean();
 DynaBean dynaBean = new LazyDynaMap();      //create DynaBean
 dynaBean.set("company", "Model");           //simple
 dynaBean.set("customer", "fname", "Steve"); //mapped
 dynaBean.set("address", 0, addressLine1);   //indexed
 Map demoMap = dynaBean.getMap()             //retrieve the Map

以下のコードは、DynaBeanの既存のマップの使用を示しています。

 Map demoMap = ....                              //exisitng Map
 DynaBean dynaBean = new LazyDynaMap(demoMap);   //wrap Map in DynaBean
 dynaBean.set("ford", "raptor");                 //set properties

LazyDynaList

DynaBean、Map、POJOS(通常のJavaクラスを指定するプレーンオールドJavaオブジェクト)のリストを提供します。 このクラスには2つの主要なポイントがあります。

  • Lazy Listの動作を指定するために、DynaBean、java.util.Map、またはPOJOSでリストを自動的に拡張して占有します。
  • コレクションまたは配列をレイジーリストに入れる簡単な方法と、レイジーリストから出てくる簡単な方法を提供します。

LazyDynaClass

_MutableDynaClass_インターフェースを実装し、_BasicDynaClass_を拡張します。 LazyDynaBeanおよび他のDynaBean実装でデフォルトのDynaClassとして使用できます。 LazyDynaBeanを使用している場合、DynaClassには何もありません。

以下のコードは、LazyDynaClassを作成します。

 MutableDynaClass dynaClass = new LazyDynaClass();   //create DynaClass
 dynaClass.add("price", java.lang.Integer.class);    //add property
 dynaClass.add("orders", OrderBean[].class);         //add indexed property
 dynaClass.add("orders", java.util.TreeMapp.class);  //add mapped property
 DynaBean dynaBean = new LazyDynaBean(dynaClass);    //Create DynaBean with associated DynaClass

以下のコードは、LazyDynaBeanを作成し、DynaClassを取得します。

 DynaBean dynaBean = new LazyDynaBean();                //Create LazyDynaBean
 MutableDynaClass dynaClass =
           (MutableDynaClass)dynaBean.getDynaClass();   //get DynaClass

 dynaClass.add("price", java.lang.Integer.class);        //add property
 dynaClass.add("exBeans", myPackage.MyBean[].class);     //add 'array' indexed property
 dynaClass.add("exMap", java.util.TreeMapp.class);       //add mapped property