Javadocによると-
クラスObject自体はインターフェイスCloneableを実装していないため、クラスがObjectであるオブジェクトに対してcloneメソッドを呼び出すと、実行時に例外がスローされます。
Objectクラスのcloneメソッドが保護されているのはなぜですか?そうですか ?
つまり、cloneableを実装していないクラスは、cloneメソッドが呼び出されたときにCloneNotSupported例外をスローします。
テストプログラムを実行しました
public class Test extends ABC implements Cloneable{
@Override
public Object clone() throws CloneNotSupportedException {
System.out.println("calling super.clone");
return super.clone();
}
public static void main(String[] args) {
Test t = new Test();
try{
t.clone();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
class ABC{
}
クラステストのクローンメソッドからsuper.cloneが呼び出されていますか?
なぜ例外をスローしないのですか?