序列化和反序列化

2022-09-11 01:42:14 字數 1569 閱讀 9082

1.j**a序列化和反序列化

序列化就將j**a物件轉換為位元組序列的過程,反序列化就是將位元組序列恢復成j**a物件的過程。

2.為什要使用序列化

一方面,傳送方需要把這個j**a物件轉換為位元組序列,然後在網路上傳送;另一方面,接收方需要從位元組序列中恢復出j**a物件。

3.如何實現j**a序列化與反序列化

1)jdk類庫中序列化api

j**a.io.objectoutputstream:表示物件輸出流

它的writeobject(object obj)方法可以對引數指定的obj物件進行序列化,把得到的位元組序列寫到乙個目標輸出流中。

j**a.io.objectinputstream:表示物件輸入流

它的readobject()方法源輸入流中讀取位元組序列,再把它們反序列化成為乙個物件,並將其返回。

2)實現序列化的要求

只有實現了serializable或externalizable介面的類的物件才能被序列化,否則丟擲異常。

3)實現j**a物件序列化與反序列化的方法

假定乙個student類,它的物件需要序列化,可以有如下三種方法:

方法一:若student類僅僅實現了serializable介面,則可以按照以下方式進行序列化和反序列化

objectoutputstream採用預設的序列化方式,對student物件的非transient的例項變數進行序列化。

objcetinputstream採用預設的反序列化方式,對對student物件的非transient的例項變數進行反序列化。

方法二:若student類僅僅實現了serializable介面,並且還定義了readobject(objectinputstream in)和writeobject(objectoutputsteam out),則採用以下方式進行序列化與反序列化。

objectoutputstream呼叫student物件的writeobject(objectoutputstream out)的方法進行序列化。

objectinputstream會呼叫student物件的readobject(objectinputstream in)的方法進行反序列化。

方法三:若student類實現了externalnalizable介面,且student類必須實現readexternal(objectinput in)和writeexternal(objectoutput out)方法,則按照以下方式進行序列化與反序列化。

objectoutputstream呼叫student物件的writeexternal(objectoutput out))的方法進行序列化。

objectinputstream會呼叫student物件的readexternal(objectinput in)的方法進行反序列化。

總結:1)j**a序列化就是把物件轉換成位元組序列,而j**a反序列化就是把位元組序列還原成j**a物件。

2)採用j**a序列化與反序列化技術,

一是可以實現資料的持久化,在mvc模式中很是有用;

二是可以物件資料的遠端通訊。

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...

序列化和反序列化

先定義乙個類 serializable xmlroot shintech public class person set public string name set public person this 0,string.empty public person int m age,string m...

序列化和反序列化

引文來自 序列化和反序列化我們可能經常會聽到,其實通俗一點的解釋,序列化就是把乙個物件儲存到乙個檔案或資料庫欄位中去,反序列化就是在適當的時候把這個檔案再轉化成原來的物件使用。using system using system.collections using system.text namesp...