【发布时间】:2015-10-09 04:31:47
【问题描述】:
我有一个需求,我需要从现有对象生成对象。我无法选择使用 clone() 或 copy() 的方法。
情况是如果用户单击按钮说复制/克隆我需要生成新的员工对象,该对象已经存在员工数据。
提前致谢
【问题讨论】:
-
Object类中根本没有copy()方法。 -
最佳实践是constructor copy。
我有一个需求,我需要从现有对象生成对象。我无法选择使用 clone() 或 copy() 的方法。
情况是如果用户单击按钮说复制/克隆我需要生成新的员工对象,该对象已经存在员工数据。
提前致谢
【问题讨论】:
Object 类中根本没有copy() 方法。
定义类时使用Clonable接口,创建一个返回类型为Object的克隆函数,该函数将抛出CloneNotSupportedException并返回克隆:
public class YourClass implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
当你创建对象时,使用克隆函数如下:
YourClass obj = new YourClass();
YourClass objCopy = (YourClass) obj.clone();
这是您可以从中受益的reference。
编辑
您也可以使用比克隆更好的复制构造函数:
class YourClass {
private String dummy;
public YourClass (YourClass another) {
this.dummy = another.dummy;
}
}
您的电话
YourClass class1 = new YourClass();
YourClass clone = new YourClass(class1);
【讨论】: