在克隆方法的通常实现中,有一些我不明白的地方。如果您查看以下代码中 try 块的第一行,我们正在调用 super.clone(),它将创建超类的实例,并返回对该实例的 Object 引用。现在,该实例不一定包含hireDay,那么我们怎么说copy.hireDay?确实它会编译得很好,但是如果实例不包含hireDay,它不应该崩溃吗?
public Object clone() {
try {
Employee copy = (Employee) super.clone(); // copy ID, name, and salary!
copy.hireDay = (Date) hireDay.clone();
return copy;
} catch (CloneNotSupportedException e) {
System.out.println(e);
return null;
}
}