数据库中数据项变化不定,如何设计Java Beans
http://tech.ddvip.com 2006年07月16日 社区交流
本文详细介绍数据库中数据项变化不定,如何设计Java Beans
动态bean
相对标准Java Bean的编译时静态决定一个Bean的属性,利用扩展javaBean属性机制,能在运行时决定属性的bean为动态bean。动态bean既有标准Java Bean的类型检查机制又有扩展javaBean属性机制的动态特点。下面我们从创建动态Bean和在配置文件中定义动态Bean的属性两方面介绍common-beanutils中动态bean机制。
4.1 运行时创建动态bean
动态bean具有动态属性,也就是说可以由程序运行时构造bean的属性,而不是像标准的javaBean在编译时决定一个bean的属性。
定义和访问一个动态bean的步骤如下:
- 定义一个动态属性Dynaproperty数组,动态属性Dynaproperty定义了一个属性的名字和对象类型;
- 用定义好的动态属性数组实例化一个动态类;
- 由动态类返回一个动态bean;
- 可以用propertyUtils访问和设置动态bean的属性。
下面是定义和访问动态bean的代码
// TestDynaBean.java
import org.apache.commons.beanutils.*;
import java.util.*;
public class TestDynaBean {
public static void main(String[] args) {
TestBean bean = new TestBean();
Object value = null;
try{
Dynaproperty[] px = {
new Dynaproperty("subordinate", bean.getClass()),
new Dynaproperty("firstName", Class.forName("java.lang.String")),
new Dynaproperty("lastName", Class.forName("java.lang.String"))
};
DynaClass dynaClass = new BasicDynaClass("employee",null,
px );
DynaBean employee = dynaClass.newInstance();
propertyUtils.setproperty(employee,"subordinate", bean);
propertyUtils.setproperty(employee,"subordinate.listIndexed[0]","dy bean set");
propertyUtils.setproperty(employee,"firstName", "Fred");
propertyUtils.setproperty(employee,"lastName", "Flintstone");
System.out.println("subordinate.listIndexed[0]:");
System.out.println(propertyUtils.getproperty(employee,"subordinate.listIndexed[0]"));
System.out.println("firstName:" + propertyUtils.getproperty(employee, "firstName"));
System.out.println("lastName:" + propertyUtils.getproperty(employee, "lastName"));
}catch (Exception e ){
System.out.println(e.toString());
}
}
}
来源:Ibm 作者:龚永生 责编:豆豆技术应用