commons-beanutils的入门用法

在开发过程中,通常会遇到一些特殊的需求,比如拷贝对象,不同类的对象之间设置公有属性的值等,apache的开源框架commons-beanutils提供了强大的支持,该框架广泛用于其他框架中如struts,hibernate,spring中。

      以下简述2种经典用法

1、对象克隆,对象属性复制(基于以下类)

类定义

public class Huma{

 int age;
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }

}

 

public class Huma2{

 int age;
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }

}

测试代码

1-1、对象克隆
  Huma huma=new Huma();
  huma.age=3;
  Huma huma2=(Huma)BeanUtils.cloneBean(huma);
  System.out.println(huma2.age);

需注意的是Huma的访问修饰符必须是public,否则在其他包下无法访问,从而导致抛出异常

另外Huma必须有setXXX,getXXX方法,否则也是无法克隆的,关于这点似乎美中不足吧

 

1-2、属性复制

两个不同类型的对象,如果属性名称相同,类型相同,且有对应的setXXX,getXXX方法,也可以进行属性复制

,注意上面说的属性相同必须满足有相同的setXXX和getXXX方法,并不要求属性名真的要一样

  Huma huma=new Huma();
  huma.age=3;
 

 Huma2 huma2=new Huma2();

 BeanUtils.copyProperties(huma2, huma);//将第二个参数的属性值复制到第一个参数相同的名称的属性上

调用以上代码huma2.age=3

 

二、动态创建未知类型对象,动态添加未知对象的属性

 

DynaProperty []pros=new DynaProperty[]{
    new DynaProperty("name", String.class),
    new DynaProperty("age", int.class)};
  DynaClass dynaC=new BasicDynaClass("Girl", null,pros);
  DynaBean bean=dynaC.newInstance();
  bean.set("name", "wang zhao jun"); //也可以PropertyUtils.setProperty(bean, "name", "wang zhao jun")
  bean.set("age", 18);
  
  System.out.println(bean.getClass());
  System.out.println("name:"+bean.get("name"));
  System.out.println("age:"+bean.get("age"))

 

这样就动态生成拥有任何属性的javabean了


转载自:http://blog.sina.com.cn/s/blog_5198c7370100lt78.html


猜你喜欢

转载自blog.csdn.net/word_joke/article/details/80160489