Java BeanUtils - Lazy DynaBeans

描述

Lazy DynaBeans是DynaBean的一个实现,它提供了连接DynaClass属性的Lazy List和Lazy Map的特性.有两种类型的Lazy DynaBeans:

  • LazyDynaBean :它指定动态提供的惰性DynaBean修改了名称和数据类型的属性.

  • LazyDynaMap :它通过使用延迟地图或列表轻松实现DynaBean的映射系统.

  • LazyDynaList :它提供了DynaBean,Map或POJOS(指定普通java类的普通旧Java对象)的列表.

  • LazyDynaClass :它实现了MutableDynaClass接口.

以下是Lazy DynaBeans的功能:

  • 懒惰属性添加:调用set方法时,Lazy bean使用它自动向DynaClass添加属性,并且它具有添加或删除DynaClass属性的能力.

  • 延迟列表/数组增长:当进入时,惰性列表或数组将自动增长dexed属性无法容纳正在设置的索引.

  • 惰性列表/数组实例化:索引属性getter和setter方法DynaBean的结果是惰性列表或数组实例化,如果不存在索引属性.如果未定义索引属性,则会自动将其添加到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");//映射
dynaBean.set("customer","lname","Smith");//mapped 
dynaBean.set("address",0,addressLine1);//索引
dynaBean.set("address",1,addressLine2);//索引

LazyDynaMap

它通过使用延迟地图为DynaBean提供轻量级的映射实现或列表系统,它不与DynaClass的属性相关联.它本身实现了DynaClass接口,并从地图内容中获取DynaClass的信息. LazyDynaMap通过实例化它来创建自己的Map,或者可以在现有Map周围生成.

下面的代码显示了新地图的创建:

DynaBean dynaBean = new LazyDynaBean(); 
DynaBean dynaBean = new LazyDynaMap();//创建DynaBean 
dynaBean.set("company","Model");//simple 
dynaBean.set("customer","fname","Steve");//映射
dynaBean.set("address",0,addressLine1);//indexed 
Map demoMap = dynaBean.getMap()//检索地图

下面的代码显示现有地图的使用在DynaBean中:

Map demoMap = ....//exisitng Map 
DynaBean dynaBean = new LazyDynaMap(demoMap);//在DynaBean中包裹Map 
dynaBean.set("ford","raptor");//设置属性

LazyDynaList

它提供了DynaBean,Map或POJOS(Plain Old)的列表指定普通java类的Java Object).这个类有两个要点:

  • 它会自动增长并占用DynaBean,java.util.Map的列表或者POJOS来指定惰性列表行为.

  • 它提供了将Collection或Array放入Lazy列表的简便方法,并且可以从Lazy List中轻松地输出.

LazyDynaClass

它实现了 MutableDynaClass 界面并扩展 BasicDynaClass .它可以被LazyDynaBean用作默认的DynaClass,也可以用作其他DynaBean实现.当您使用LazyDynaBean时,DynaClass没有任何内容.

以下代码创建了LazyDynaClass:

 
 MutableDynaClass dynaClass = new LazyDynaClass();//创建DynaClass 
 dynaClass.add("price",java.lang.Integer.class);//添加属性
 dynaClass.add("orders",OrderBean [] .class);//添加索引属性
 dynaClass.add("orders",java.util.TreeMapp.class);//添加映射属性
 DynaBean dynaBean = new LazyDynaBean(dynaClass);//使用关联的DynaClass创建DynaBean

以下代码创建LazyDynaBean并获取DynaClass:

 
 DynaBean dynaBean = new LazyDynaBean();//创建LazyDynaBean 
 MutableDynaClass dynaClass = 
(MutableDynaClass)dynaBean.getDynaClass();//得到DynaClass 
 dynaClass.add("price",java.lang.Integer.class);//添加属性
 dynaClass.add("exBeans",myPackage.MyBean [] .class);//添加'array'索引属性
 dynaClass.add("exMap",java.util.TreeMapp.class);//添加映射属性