请提供更多详细信息或替代方法。
请注意:我没有重写克隆方法,如果有人能解释我是否应该覆盖克隆方法以及优势是什么,我将不胜感激。
答案 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