欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中對象的序列化方式克隆詳解

 更新時間:2017年01月13日 09:21:50   作者:anialy  
在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學(xué)習(xí)技術(shù)知識提高解決問題的能力,這樣我們才能走在最前方。這篇文章主要給大家介紹了Java中對象的序列化方式克隆,需要的朋友可以參考借鑒,下面來一起看看吧。

Java 序列化技術(shù)可以使你將一個對象的狀態(tài)寫入一個Byte 流里,并且可以從其它地方把該Byte 流里的數(shù)據(jù)讀出來,重新構(gòu)造一個相同的對象。

簡述:

用字節(jié)流的方式,復(fù)制Java對象

代碼:

流克隆復(fù)制函數(shù)

public static Object deepClone(Object obj){ 
 if(obj == null){ 
  return null; 
 } 
 try { 
  ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); 
  Object cloneObj = null; 
  ObjectOutputStream out = new ObjectOutputStream(byteOut); 
  out.writeObject(obj); 
  ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); 
  ObjectInputStream in = new ObjectInputStream(byteIn); 
  cloneObj = in.readObject(); 
  return cloneObj; 
 } catch (Exception e) { 
  throw new RuntimeException(e); 
 } 
} 

ObjectClone.java

package test; 
 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 
 
public class ObjectClone { 
 /** 
  * 測試對象 
  */ 
 private static class Person implements Serializable { 
  private String name; 
  private int age; 
  Person(String name, int age){ 
   this.name = name; 
   this.age = age; 
  } 
  @Override 
  public String toString() { 
   return String.format("name: %s\nage: %s", name, age); 
  } 
 } 
  
 /** 
  * 測試函數(shù) 
  */ 
 public static void main(String[] args) { 
  Person person = new Person("Henry", 22); 
  Person newPerson = (Person)ObjectClone.deepClone(person); 
  System.out.println(newPerson); 
 } 
  
 /** 
  * 工具類 
  * 
  * @param obj 
  * @return 
  */ 
 public static Object deepClone(Object obj){ 
  if(obj == null){ 
   return null; 
  } 
  try { 
   ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); 
   Object cloneObj = null; 
   ObjectOutputStream out = new ObjectOutputStream(byteOut); 
   out.writeObject(obj); 
   ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); 
   ObjectInputStream in = new ObjectInputStream(byteIn); 
   cloneObj = in.readObject(); 
   return cloneObj; 
  } catch (Exception e) { 
   throw new RuntimeException(e); 
  } 
 } 
} 

測試結(jié)果:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • SSM框架下實(shí)現(xiàn)登錄注冊的示例代碼

    SSM框架下實(shí)現(xiàn)登錄注冊的示例代碼

    這篇文章主要介紹了SSM框架下實(shí)現(xiàn)登錄注冊的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue 實(shí)現(xiàn)刪除對象的元素 delete

    vue 實(shí)現(xiàn)刪除對象的元素 delete

    這篇文章主要介紹了vue 實(shí)現(xiàn)刪除對象的元素delete,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java遠(yuǎn)程連接Linux執(zhí)行命令的3種方式完整代碼

    java遠(yuǎn)程連接Linux執(zhí)行命令的3種方式完整代碼

    在一些Java應(yīng)用程序中需要執(zhí)行一些Linux系統(tǒng)命令,例如服務(wù)器資源查看、文件操作等,這篇文章主要給大家介紹了關(guān)于java遠(yuǎn)程連接Linux執(zhí)行命令的3種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 鏈表的原理及java實(shí)現(xiàn)代碼示例

    鏈表的原理及java實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了鏈表的原理及java實(shí)現(xiàn)代碼示例,涉及單向鏈表的基本介紹,單向鏈表的Java實(shí)現(xiàn)代碼分享等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以參考下。
    2017-11-11
  • IntelliJ?IDEA如何集成maven

    IntelliJ?IDEA如何集成maven

    這篇文章主要介紹了IntelliJ?IDEA如何集成maven問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • springboot快速搭建ftpserver服務(wù)端的詳細(xì)步驟

    springboot快速搭建ftpserver服務(wù)端的詳細(xì)步驟

    基于springboot,使用ftpserver快速搭建一個FTP服務(wù)端,搭建過程很簡單,我們把過程分成4個步驟,一分鐘內(nèi)快速完成構(gòu)建,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • SpringBoot?Loki安裝簡介及實(shí)戰(zhàn)思路

    SpringBoot?Loki安裝簡介及實(shí)戰(zhàn)思路

    這篇文章主要為大家介紹了SpringBoot?Loki安裝簡介及實(shí)戰(zhàn)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪的相關(guān)資料
    2022-11-11
  • Java中ThreadLocal的使用及原理詳解

    Java中ThreadLocal的使用及原理詳解

    這篇文章主要介紹了Java中ThreadLocal的使用及原理詳解,ThreadLocal是JDK提供的,提供線程本地變量,主要用來存放線程獨(dú)有變量和解決參數(shù)傳遞問題的,需要的朋友可以參考下
    2023-09-09
  • Java判斷一個實(shí)體是不是空的簡單方法

    Java判斷一個實(shí)體是不是空的簡單方法

    這篇文章主要給大家介紹了關(guān)于Java判斷一個實(shí)體是不是空的簡單方法,實(shí)際項(xiàng)目中我們會有很多地方需要判空校驗(yàn),文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下
    2023-07-07
  • Java簡單實(shí)現(xiàn)約瑟夫環(huán)算法示例

    Java簡單實(shí)現(xiàn)約瑟夫環(huán)算法示例

    這篇文章主要介紹了Java簡單實(shí)現(xiàn)約瑟夫環(huán)算法,簡單描述了約瑟夫環(huán)問題,并結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)約瑟夫環(huán)的具體操作技巧,需要的朋友可以參考下
    2017-09-09

最新評論