我正在尝试克隆DTO。我已经拍摄了一个DTO对象:
public class Employee implements Cloneable
{
String name;
String dept;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
但是这行给了我错误:
public class Test
{
public static void main(String args[]) {
Employee emp1 = new Employee();
emp1.setDept("10");
emp1.setName("Kiran");
Employee emp2 = (Employee) emp1.clone(); // This Line is giving error .
}
}
我的查询是克隆方法来自Object
,为什么我们不能直接使用它来像`toString方法一样?
答案 0 :(得分:8)
您必须覆盖受保护的Object.clone()。见 java.lang.Cloneable和Object.clone()文档。
此处有更完整的示例:How to implement Cloneable interface。
答案 1 :(得分:4)
不幸的是cloning in Java is broken。如果您有选项,请尝试定义自己的克隆接口,实际具有clone
方法的接口,或使用复制构造函数创建对象的副本。
答案 2 :(得分:1)
实际上,没关系。您需要覆盖类中的clone方法,因为它在java.lang.Object中受保护。不要忘记删除方法签名中的CloneNotSupportedException,这样就不必在代码中的任何位置处理它。