可以重載clone方法克隆對象

目前創新互聯已為上千家的企業提供了網站建設、域名、網站空間、網站托管運營、企業網站設計、南丹網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
首先、該類要實現Cloneable的接口,不然執行clone方法的時候會拋出CloneNotSupportedException異常
然后、就在該類重載clone方法,自己加上克隆的邏輯,本人小白,手敲的代碼
public?class?Book?implement?Cloneable{
private?String?name;
public?Book(String?name){
this.name=name;
}
@Override
public?Book?clone()?throws?CloneNotSupportedException?{
return?new?Book(this.name);
}
}
從樓主對回答的追問上發現,樓主的連JAVA基本的語法都很差啊。=號是賦值運算符,不是比較。
double[] vectorValue;
vectorValue = vectorValue.clone();
這個段代碼執行肯定報錯了。但他還的意思還是很明確的。
首先:double[] vectorValue; ? 這個是定義了一個double類型的數組變量vectorValue。
其次:vectorValue = vectorValue.clone(); ?//這個是將vectorValue 克隆一份,賦值給自己。也就是說vectorValue變量指向了新的一塊內存區域。
舉個例子可能更能說明問題。
public?class?TestMain?implements?Cloneable?{
private?int?i?;
public?TestMain(int?i){
this.i?=?i?;
}
@Override
protected?Object?clone()?{
//?TODO?Auto-generated?method?stub
return?new?TestMain(this.getI()+1);
}
public?int?getI()?{
return?i;
}
/**
?*?@param?args
?*/
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
TestMain?tm1?=?new?TestMain(1);
TestMain?tm2??=?tm1;
tm1?=?(TestMain)tm1.clone();
System.out.println(tm1.getI());?//tm1指向的是通過clone()方法創建的新的對象的地址,i的值已經是2了。
System.out.println(tm2.getI());?//tm2指向的還是tm1創建時的地址,i的值為1
}
}
final只是不能修改內部值,但是可以修改引用.你a=b.clone();已經把a的引用給修改了!
文章名稱:java克隆代碼 java數組克隆
當前地址:http://www.yijiale78.com/article34/doddspe.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、網站導航、營銷型網站建設、標簽優化、網頁設計公司、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯