Java BeanUtils - 延遲 DynaBeans



描述

延遲 DynaBeans 是 DynaBean 的一種實現,它具有延遲列表和延遲對映的特點,這將 DynaClass 的屬性連線起來。延遲 DynaBeans 有四種類型。

  • LazyDynaBean:它指定了延遲 DynaBean,它提供了名稱和資料型別動態修改的屬性。

  • LazyDynaMap:它提供了一種輕量級的 DynaBean 實現,透過使用延遲對映或列表系統進行對映。

  • LazyDynaList:它為 DynaBean、Map 或 POJOS(指定普通 Java 類的普通舊 Java 物件)提供列表。

  • LazyDynaClass:它實現了 MutableDynaClass 介面。

以下是延遲 DynaBeans 的功能

  • 延遲屬性新增:延遲 Bean 使用它在呼叫 set 方法時自動將屬性新增到 DynaClass,並且它能夠新增或刪除 DynaClass 的屬性。

  • 延遲列表/陣列增長:當索引屬性無法容納正在設定的索引時,延遲列表或陣列將自動增長。

  • 延遲列表/陣列例項化:DynaBean 的索引屬性 getter 和 setter 方法會導致延遲列表或陣列例項化,如果不存在索引屬性。如果未定義索引屬性,則它將自動新增到 DynaClass 並例項化預設的列表實現。

  • 延遲對映例項化:DynaBean 的對映屬性 getter 和 setter 方法會導致延遲對映例項化,如果不存在對映屬性。如果未定義對映屬性,則它將自動新增到 DynaClass 並例項化預設的對映實現。

  • 延遲 Bean 例項化:如果DynaClass 屬性定義為 DynaBean 或普通 Bean 並且在 DynaBean 中不存在,則 LazyDynaBean 將使用預設的空建構函式例項化該 Bean。

LazyDynaBean

它是標準延遲 Bean 的實現,它指定了延遲 DynaBean,該 Bean 提供了名稱和資料型別動態修改的屬性。它透過與LazyDynaClass關聯來實現MutableDynaClass介面。以下簡單程式碼演示了透過使用 getter 或 setter 使用 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 透過例項化它來建立自己的 Map,或者可以圍繞現有的 Map 生成。

以下程式碼顯示了建立新對映的方法。

 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 物件)提供列表。此類有兩個要點。

  • 它會自動增長並使用 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
廣告

© . All rights reserved.