日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深克隆

發(fā)布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深克隆 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

淺拷貝(Object類中的clone()方法)是指在拷貝對象時,對于基本數(shù)據(jù)類型的變量會重新復(fù)制一份,而對于引用類型的變量只是對引用進(jìn)行拷貝。

深拷貝(或叫深克隆) 則是對對象及該對象關(guān)聯(lián)的對象內(nèi)容,都會進(jìn)行一份拷貝。

?

?

實(shí)體類:

package com.lin.test;import java.io.Serializable;/*** @athor tianlin** 2015年6月28日 下午1:56:18***/ public class Dog implements Serializable{private static final long serialVersionUID = 1L;private String dogName;public String getDogName() {return dogName;}public void setDogName(String dogName) {this.dogName = dogName;}}package com.lin.test;import java.io.Serializable;/*** @athor tianlin** 2015年6月28日 下午1:43:24***/ public class User implements Serializable{private static final long serialVersionUID = 1L;private String username;private Dog dog;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}}

?

克隆執(zhí)行類:

package com.lin.test;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;/*** @athor tianlin** 2015年6月28日 下午1:44:08***/ public class ObjCloner {@SuppressWarnings("unchecked")public static <T>T cloneObj(T obj){T retVal = null; try{// 將對象寫入流中ByteArrayOutputStream baos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(baos);oos.writeObject(obj);// 從流中讀出對象ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());ObjectInputStream ois = new ObjectInputStream(bais);retVal = (T)ois.readObject();}catch(Exception e){e.printStackTrace();}return retVal;}}

?

測試類:

package com.lin.test; /*** @athor tianlin** 2015年6月28日 下午1:42:47***/ public class CloneTest {public static void main(String[] args) {User user = new User();user.setUsername("張三");Dog dog = new Dog();dog.setDogName("小狗1");user.setDog(dog);User user2 = ObjCloner.cloneObj(user);System.out.println("user username : "+user.getUsername());System.out.println("user dogname : " + user.getDog().getDogName());System.out.println("user2 username : "+user2.getUsername());System.out.println("user2 dogname : " + user2.getDog().getDogName());System.out.println(" -------------------------------------");user2.setUsername("李四");user2.getDog().setDogName("小狗2");;System.out.println("user username : "+user.getUsername());System.out.println("user dogname : " + user.getDog().getDogName());System.out.println("user2 username : "+user2.getUsername());System.out.println("user2 dogname : " + user2.getDog().getDogName());}}

?

運(yùn)行結(jié)果:

user username : 張三 user dogname : 小狗1 user2 username : 張三 user2 dogname : 小狗1------------------------------------- user username : 張三 user dogname : 小狗1 user2 username : 李四 user2 dogname : 小狗2 View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Jtianlin/p/4605477.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的深克隆的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。