私は最近 Java プログラミングを始めました。Java SE API ドキュメントによると、Cloneableインターフェースは、そのクラスでの複製操作が許可されていることを示すために実装されています。そうでない場合は、CloneNotSupportedExceptionがスローされます。ただし、練習セッションでは、Cloneable インターフェイスを実装しないクラスを複製したプログラムを実行することができ、例外はスローされませんでした。例外がスローされなかった理由を知る必要があります。Windows 7 で JDK 6 update 45 と最新の Eclipse IDE を使用しています。コードは次のとおりです。
package com.warren.project.first;
public class PracticeClass {
//explicit initialisation of PracticeClass Instance Variables
private int fieldOne=1;
private int fieldTwo=2;
private int fieldThree=3;
//setters and getters for instance fields of PracticeClass
public void setField1(int field1){
this.fieldOne=field1;
}
public void setField2(int field2){
this.fieldTwo=field2;
}
public void setField3(int field3){
this.fieldThree=field3;
}
public int getField1(){
return this.fieldOne;
}
public int getField2(){
return this.fieldTwo;
}
public int getField3(){
return this.fieldThree;
}
//This method clones the PracticeClass's instances and returns the clone
@Override
public PracticeClass clone(){
PracticeClass practiceClass= this;
return practiceClass;
}
}
package com.warren.project.first;
public class AppMain {
public static void main(String[] args) {
//Create PracticeClass Object
PracticeClass pc1=new PracticeClass();
//Set its instance fields using setters
pc1.setField1(111);
pc1.setField2(222);
pc1.setField3(333);
//Display Values to screen
System.out.println(pc1.getField1()+" "+pc1.getField2()+" "+pc1.getField3());
//Create clone of PracticeClass object
PracticeClass pc2=pc1.clone();
//Print values from PracticeClass clone object
System.out.println(pc2.getField1()+" "+pc2.getField2()+" "+pc2.getField3());
}
}
このコードは、例外がスローされることなく正常に実行されます。CloneNotSupportedExceptionがスローされないのはなぜですか?