- 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