现在的位置: 首页 > 综合 > 正文

关于BeanUtils中copyProperties方法的研究体会

2013年10月06日 ⁄ 综合 ⁄ 共 2090字 ⁄ 字号 评论关闭

Struts中经常看到BeanUtils.copyProperties这个方法满天飞,特别是在提取表单中的值的时候,但是这个方法具体怎么实现属性的复制却一直不是很明白,特别是在复制属性的时候,比方说把b复制到aBeanUtils.copyProperties(a,b),是不是把b的所有属性都复制过去了呢?如果是同一个属性,b中的值是不是会覆盖掉a中的值?这些应该都可以从BeanUtils的源码中得到答案,奈何找了半天没找到源码,在网上也没有找到别人的答复,于是本着实践是检验真理的唯一标准,决定亲自测试一把,^_^

首先我们构建两个类PeoplePerson,它们的实例呆会会用来相互复制。

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之后-->

作者:

抱歉!评论已关闭.