日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

深克隆

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

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

深拷貝(或叫深克隆) 則是對對象及該對象關聯的對象內容,都會進行一份拷貝。

?

?

實體類:

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;}}

?

克隆執行類:

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());}}

?

運行結果:

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

?

轉載于:https://www.cnblogs.com/Jtianlin/p/4605477.html

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。