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

BeanUtils.copyProperties() or use setter() for copying values

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

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));
    }

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


提前致谢!!!

BeanUtils.copyProperties(bean1, bean2); 

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

  • 我认为对于如此简单且定义明确的任务,谨慎的做法是 手动设置属性而不是使用 BeanUtils.copyProperties(bean1, bean2);。您将拥有更多的控制权。

  • Apache库使用了反射,所以会比 您的手动方法。

.