我不理解如何复制自定义对象的机制。例如:
public class Main{
public static void main(String [] args) {
Person person = new Person();
person.setFname("Bill");
person.setLname("Hook");
Person cloned = (Person)person.clone();
System.out.println(cloned.getFname() + " " + cloned.getLname());
}
}
class Person implements Cloneable{
private String fname;
private String lname;
public Object clone() {
Person person = new Person();
person.setFname(this.fname);
person.setLname(this.lname);
return person;
}
public void setFname(String fname) {
this.fname = fname;
}
public void setLname(String lname){
this.lname = lname;
}
public String getFname(){
return fname;
}
public String getLname() {
return lname;
}
}
这个示例展示了正确的克隆方式,就像书中所写的一样。但是我可以删除类名定义中的implements Cloneable并获得相同的结果。
因此,我不理解为什么需要实现Cloneable以及为什么将clone()方法定义在Object类中?
super.clone()
开始,因此可能会出现超类明确抛出CloneNotSupportedException
的情况。请参见我的答案。 - Rinke