天天看點

Java序列化

java序列化

java 提供了一種對象序列化的機制。

該機制中,一個對象可以被表示為一個位元組序列,該位元組序列包括該對象的資料、有關對象的類型的資訊和存儲在對象中資料的類型。

序列化:将對象寫入檔案中

反序列化:将對象從檔案中讀取出來。也就是說使用儲存的對象的類型資訊、對象的資料、對象中的資料類型在記憶體中建立該對象。

整個過程都是 java 虛拟機(jvm)獨立的,也就是說,在一個平台上序列化的對象可以在另一個完全不同的平台上反序列化該對象。

類 objectinputstream包含序列化一個對象的方法。

類objectinputstream 包含反序列化一個對象的方法

該方法傳回值為object,是以,需要将它轉換成合适的資料類型。

java序列化示範

要被序列化的類emloyee

一個類的對象要想序列化成功,必須滿足兩個條件:

(1)該類必須實作 java.io.serializable 接口。

(2)該類的所有屬性必須是可序列化的。如果有一個屬性不是可序列化的,則該屬性必須注明是短暫的。

檢驗一個類的執行個體是否能序列,隻需要檢視該類有沒有實作 java.io.serializable接口。

序列化對象

當序列化一個對象到檔案時, 按照 java 的标準約定檔案擴充名是 .ser 。

反序列化對象

輸出結果:

deserialized employee...

name: reyan ali

address:phokka kuan, ambehta peer

ssn: 0

number:101

當對象被序列化時,屬性 ssn 的值為 111222333,但是因為該屬性是短暫的,該值沒有被發送到輸出流。是以反序列化後 employee 對象的 ssn 屬性為 0。

transient