物件克隆是一種建立物件的精確副本的方法。 Object
類的clone()
方法用於克隆物件。java.lang.Cloneable
介面必須由我們要建立其物件克隆的類實現。如果我們不實現Cloneable
介面,clone()
方法生成CloneNotSupportedException
。
clone()
方法在Object
類中定義。 clone()
方法的語法如下:
protected Object clone() throws CloneNotSupportedException
clone()
方法儲存用於建立物件的精確副本的額外處理任務。 如果我們使用new
關鍵字執行它,它將需要執行大量的處理,這就是為什麼我們使用物件克隆。
物件克隆的優點
讓我們來看看物件克隆的簡單例子
class Student18 implements Cloneable {
int rollno;
String name;
Student18(int rollno, String name) {
this.rollno = rollno;
this.name = name;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String args[]) {
try {
Student18 s1 = new Student18(101, "amit");
Student18 s2 = (Student18) s1.clone();
System.out.println(s1.rollno + " " + s1.name);
System.out.println(s2.rollno + " " + s2.name);
} catch (CloneNotSupportedException c) {
}
}
}
執行上面程式碼,得到如下結果 -
101 amit
101 amit
從上面的例子可以看出,兩個參照變數都有相同的值。 因此,clone()
將物件的值複製到另一個物件。 因此,在實際應用中我們不需要編寫顯式程式碼將物件的值複製到另一個物件。
如果通過new
關鍵字建立另一個物件並將另一個物件的值賦給這個物件,則需要對該物件進行大量處理。 所以為了節省額外的處理任務,我們使用clone()
方法。