数据库中数据项变化不定,如何设计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的步骤如下:

  1. 定义一个动态属性Dynaproperty数组,动态属性Dynaproperty定义了一个属性的名字和对象类型;
  2. 用定义好的动态属性数组实例化一个动态类;
  3. 由动态类返回一个动态bean;
  4. 可以用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    作者:龚永生    责编:豆豆技术应用

正在加载评论...