clone メソッドの通常の実装でわからないことがあります。次のコードの try ブロックの最初の行を見ると、スーパー クラスのインスタンスを作成し、そのインスタンスへの Object 参照を返す super.clone() を呼び出しています。さて、そのインスタンスには必ずしも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;
}
}