用Java克隆对象

时间:2011-07-09 13:57:54

标签: java

我正在尝试克隆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方法一样?

3 个答案:

答案 0 :(得分:8)

您必须覆盖受保护的Object.clone()。见 java.lang.CloneableObject.clone()文档。

此处有更完整的示例:How to implement Cloneable interface

答案 1 :(得分:4)

不幸的是cloning in Java is broken。如果您有选项,请尝试定义自己的克隆接口,实际具有clone方法的接口,或使用复制构造函数创建对象的副本。

答案 2 :(得分:1)

实际上,没关系。您需要覆盖类中的clone方法,因为它在java.lang.Object中受保护。不要忘记删除方法签名中的CloneNotSupportedException,这样就不必在代码中的任何位置处理它。