- Java BeanUtils 教程
- Java BeanUtils - 主页
- Java BeanUtils - 概述
- 动态 Bean (DynaBeans)
- 背景
- 基本 DynaBeans
- 结果集动态类
- 行集动态类
- 包装DynaBean
- 惰性 DynaBeans
- 实用对象和类
- 实用对象和类
- Java BeanUtils 有用资源
- Java BeanUtils - 快速指南
- Java BeanUtils - 资源
- Java BeanUtils - 讨论
Java BeanUtils - 惰性 DynaBeans
描述
Lazy DynaBeans 是 DynaBean 的一个实现,它具有 Lazy List 和 Lazy Map 的特性,连接了 DynaClass 的属性。Lazy DynaBean 有四种类型:
LazyDynaBean:它指定提供动态修改的名称和数据类型属性的惰性 DynaBean。
LazyDynaMap:它通过使用惰性映射或列表系统提供 DynaBean 的轻量级实现来进行映射。
LazyDynaList:它提供 DynaBean、Map 或 POJOS(指定普通 java 类的普通旧 Java 对象)的列表。
LazyDynaClass:它实现 MutableDynaClass 接口。
以下是 Lazy DynaBeans 的功能:
延迟属性添加:Lazy beans 使用它在调用 set 方法时自动向 DynaClass 添加属性,并且能够添加或删除 DynaClass 的属性。
惰性列表/数组增长:当索引属性无法容纳正在设置的索引时,惰性列表或数组将自动增长。
延迟列表/数组实例化:如果不存在索引属性,DynaBean 的索引属性 getter 和 setter 方法会导致延迟列表或数组实例化。如果未定义索引属性,则它将自动添加到 DynaClass 并实例化默认的 List 实现。
延迟映射实例化:如果不存在映射属性,DynaBean 的映射属性 getter 和 setter 方法会导致延迟映射实例化。如果未定义映射属性,则它将自动添加到 DynaClass 并实例化默认的 Map 实现。
Lazy Bean 实例化:如果DynaClass属性定义为 DynaBean 或常规 bean 并且在 DynaBean 中不存在,则LazyDynaBean 将使用默认的空构造函数实例化 bean 。
LazyDynaBean
它是标准惰性 bean 的实现,它指定提供动态修改的名称和数据类型属性的惰性 DynaBean。它通过与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 的使用:
Map demoMap = .... // exisitng Map DynaBean dynaBean = new LazyDynaMap(demoMap); // wrap Map in DynaBean dynaBean.set("ford", "raptor"); // set properties
惰性动态列表
它提供 DynaBean、Map 或 POJOS(指定普通 java 类的普通旧 Java 对象)的列表。这个类有两个要点:
它会自动增长并使用 DynaBean、java.util.Map 或 POJOS 占用列表来指定 Lazy List Behave。
它提供了将集合或数组放入惰性列表的简单方法以及从惰性列表中取出的简单方法。
惰性动态类
它实现MutableDynaClass接口并扩展BasicDynaClass。它可以被 LazyDynaBean 用作默认 DynaClass 并与其他 DynaBean 实现一起使用。当您使用 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