在Struts中经常看到BeanUtils.copyProperties这个方法满天飞,特别是在提取表单中的值的时候,但是这个方法具体怎么实现属性的复制却一直不是很明白,特别是在复制属性的时候,比方说把b复制到a,BeanUtils.copyProperties(a,b),是不是把b的所有属性都复制过去了呢?如果是同一个属性,b中的值是不是会覆盖掉a中的值?这些应该都可以从BeanUtils的源码中得到答案,奈何找了半天没找到源码,在网上也没有找到别人的答复,于是本着实践是检验真理的唯一标准,决定亲自测试一把,^_^。
首先我们构建两个类People和Person,它们的实例呆会会用来相互复制。
People.java:
package com.mangocity.test;
/**
* @author CMTobby
*/
public class People {
public People() {
// TODO Auto-generated constructor stub
}
private String name;//姓名
private int age;//年龄
private String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Person.java:
package com.mangocity.test;
/**
* @author CMTobby
*/
public class Person {
private String name;
private int age;
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
接着构建我们的测试类
import org.apache.commons.beanutils.*;
public class TestBeanUtils {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
People tobby=new People();
Person cindy=new Person();
tobby.setAge(23);
tobby.setName("CMTobby");
tobby.setEmail("xiaozhu87487705@163.com");
cindy.setName("Cindyelf");
cindy.setAge(24);
try {
BeanUtils.copyProperties(cindy, tobby);
System.out.println(cindy.getName()+":"+cindy.getAge());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行该程序输出是:CMTobby:23。这说明经过BeanUtils.copyProperties之后-->
- 该日志由 pesto 于11年前发表在综合分类下,最后更新于 2013年10月06日.
- 转载请注明: 关于BeanUtils中copyProperties方法的研究体会 | 学步园 +复制链接