BeanUtils.copyProperties()或使用setter()复制值

时间:2016-06-23 04:31:03

标签: java javabeans

我只是想找到哪种方法更适合将数据从一个对象复制到另一个对象。请找到以下代码

Bean1

private int id;
private int rollnumber;
private String name;
private String department;

//constructor and getter setter

Bean2

private int id;
private int rollnumber;
private String name;
private String dob;
private String department;

//constructor and getter setter

我有这两个班。现在,main()是,

public static void main(String...args){
        Bean1 bean1 = new Bean1(1,1001,"","");
        Bean2 bean2 = new Bean2();
        long startTime = System.currentTimeMillis();
        //Copying using setter
        bean2.setDepartment(bean1.getDepartment());
        bean2.setDob(null);
        bean2.setId(bean1.getId());
        bean2.setName(bean1.getName());
        bean2.setRollnumber(bean1.getRollnumber());
        System.out.println("total time "+(System.currentTimeMillis()-startTime));
    }

在这种方法中,与使用 BeanUtils.copyProperties 的下面代码相比,时差非常小。

public static void main(String...args){
        Bean1 bean1 = new Bean1(1,1001,"","");
        Bean2 bean2 = new Bean2();
        long startTime = System.currentTimeMillis();

        BeanUtils.copyProperties(bean1, bean2);

        System.out.println("total time "+(System.currentTimeMillis()-startTime));
    }

任何人都建议我在组织项目中哪种方法更好。


提前致谢!!!

2 个答案:

答案 0 :(得分:1)

  • 我认为对于如此简单明确的任务来说,这是谨慎的 手动设置属性而不是使用 BeanUtils.copyProperties(bean1, bean2);。您将获得更多控制权。

  • Apache库使用反射,所以它会慢得多 你的手动方法。

答案 1 :(得分:0)

BeanUtils.copyProperties(bean1, bean2); 

使用Reflection将bean1的属性复制到bean2,这可能很昂贵。 使用setter复制属性将使您获得更多代码,但效率更高。