- Java BeanUtils 教程
- Java BeanUtils - 首頁
- Java BeanUtils - 概述
- 動態 Bean (DynaBeans)
- 背景
- 基本 DynaBeans
- ResultSetDynaClass
- RowSetDynaClass
- WrapDynaBean
- 延遲 DynaBeans
- 資料型別轉換
- 背景
- BeanUtils 和 ConvertUtils
- 建立自定義轉換器
- 區域感知轉換
- 實用程式物件和類
- 實用程式物件和類
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