与Spring提供的BeanUtils.copyProperties相比,克隆方法在性能方面是否昂贵?

时间:2013-01-31 08:35:57

标签: java performance spring

请提供更多详细信息或替代方法。

请注意:我没有重写克隆方法,如果有人能解释我是否应该覆盖克隆方法以及优势是什么,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

您不能使用复制构造函数吗?

public class User {

    private String firstname;
    private String lastname;

    // 0-arg constructor
    public User() {        
    }

    // classic constructor
    public User(String firstname, String lastname) {
        this.firstname = firstname;
        this.lastname = lastname;
    }

    // copy constructor
    public User(User copy) {
        firstname = copy.getFirstname();
        lastname = copy.getLastname();
    }

    // accessors omitted

}

然后,您可以像这样使用它:

User johnDoe = new User("john", "doe");
User copy = new User(johnDoe);

这是一种非常常见的方法,其优点是您可以手动决定复制或不复制的属性,以及如何复制它们。

答案 1 :(得分:1)

这不是性能,克隆性能还可以。但是你只能克隆Cloneable对象,而Spring的BeanUtils.copyProperties可以复制任何JavaBean对象的属性(public no-args构造函数和setter / getters属性)。例如。这可以很好地复制不同类的2个对象的属性

class X {
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

class Y {
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

public class Test1 {

    public static void main(String[] args) throws Exception {
        X x = new X();
        x.setName("test");
        Y y = new Y();
        BeanUtils.copyProperties(x, y);
        System.out.println(y.getName());
    }
}

并打印

test