Java對象克隆

對象克隆是一種創建對象的精確副本的方法。 Object類的clone()方法用於克隆對象。java.lang.Cloneable接口必須由我們要創建其對象克隆的類實現。如果我們不實現Cloneable接口,clone()方法生成CloneNotSupportedException

clone()方法在Object類中定義。 clone()方法的語法如下:

protected Object clone() throws CloneNotSupportedException

爲什麼要使用clone()方法?

clone()方法保存用於創建對象的精確副本的額外處理任務。 如果我們使用new關鍵字執行它,它將需要執行大量的處理,這就是爲什麼我們使用對象克隆。

對象克隆的優點

  • 少處理任務。

clone()方法示例(對象克隆)

讓我們來看看對象克隆的簡單例子

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()方法。