鍍金池/ 教程/ Java/ Java對(duì)象克隆
Java for循環(huán)
Java接口
Java是什么?
Java命名約定
java中方法重載和方法重寫的區(qū)別
Java運(yùn)算符
Java抽象類
Java快速入門
Java實(shí)例初始化程序塊
Java靜態(tài)綁定和動(dòng)態(tài)綁定
Java do-while循環(huán)
Java對(duì)象克隆
Java Object類
Java聚合
Java繼承
Java this關(guān)鍵字
Java虛擬機(jī)內(nèi)部體系結(jié)構(gòu)
Java構(gòu)造器(構(gòu)造方法)
Eclipse安裝和配置
Java多態(tài)
Java方法重載
Java while循環(huán)
Java教程
Java按值調(diào)用和引用調(diào)用
Java strictfp關(guān)鍵字
Java封裝
Java語(yǔ)言特點(diǎn)
Java數(shù)組
Java instanceof運(yùn)算符
Java包裝類
Java命令行參數(shù)
Java包
Java面向?qū)ο螅∣OP)概念
簡(jiǎn)單Java程序
Java基礎(chǔ)實(shí)例程序
Java對(duì)象和類
Java continue語(yǔ)句
Java抽象類和接口的區(qū)別
C++ VS Java比較
Java if/else語(yǔ)句
Java switch語(yǔ)句
Java歷史
Java變量和數(shù)據(jù)類型
安裝Java環(huán)境(Linux)
Java JDK安裝和配置
Hello Java程序的內(nèi)部細(xì)節(jié)
Java break語(yǔ)句
Java方法重寫
Java Unicode編碼系統(tǒng)
怎么樣開始學(xué)習(xí)Java編程?
對(duì)象和類之間的區(qū)別
Java訪問修飾符
Java super關(guān)鍵字
Java注釋
JDK,JRE和JVM之間的區(qū)別
Java final關(guān)鍵字
Java static關(guān)鍵字

Java對(duì)象克隆

對(duì)象克隆是一種創(chuàng)建對(duì)象的精確副本的方法。 Object類的clone()方法用于克隆對(duì)象。java.lang.Cloneable接口必須由我們要?jiǎng)?chuàng)建其對(duì)象克隆的類實(shí)現(xiàn)。如果我們不實(shí)現(xiàn)Cloneable接口,clone()方法生成CloneNotSupportedException。

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

protected Object clone() throws CloneNotSupportedException

為什么要使用clone()方法?

clone()方法保存用于創(chuàng)建對(duì)象的精確副本的額外處理任務(wù)。 如果我們使用new關(guān)鍵字執(zhí)行它,它將需要執(zhí)行大量的處理,這就是為什么我們使用對(duì)象克隆。

對(duì)象克隆的優(yōu)點(diǎn)

  • 少處理任務(wù)。

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

讓我們來看看對(duì)象克隆的簡(jiǎn)單例子

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) {
        }

    }
}

執(zhí)行上面代碼,得到如下結(jié)果 -

101 amit
101 amit

從上面的例子可以看出,兩個(gè)引用變量都有相同的值。 因此,clone()將對(duì)象的值復(fù)制到另一個(gè)對(duì)象。 因此,在實(shí)際應(yīng)用中我們不需要編寫顯式代碼將對(duì)象的值復(fù)制到另一個(gè)對(duì)象。

如果通過new關(guān)鍵字創(chuàng)建另一個(gè)對(duì)象并將另一個(gè)對(duì)象的值賦給這個(gè)對(duì)象,則需要對(duì)該對(duì)象進(jìn)行大量處理。 所以為了節(jié)省額外的處理任務(wù),我們使用clone()方法。