1. 程式人生 > 其它 >Java的序列化和反序列化

Java的序列化和反序列化

1、Java的序列化 ,主要是通過ObjectOutputStream的writeObject方法實現,通過物件輸出流寫出到磁碟中;反序列化是通過ObjectInutStream的readObject方法實現,通過物件輸入流讀程序序記憶體中。

  java序列化是一個持久化的過程,減少記憶體開銷,等程式需要用到物件資料的時候再進行反序列化到記憶體中,供程式進行使用

2、java的序列化必須要實現Serializable介面,在序列化的底層原始碼中會通過判斷傳過來的物件型別是否是Serializable型別(instanceof),如果不是拋java.io.NotSerializableException異常

3、在序列化和反序列化的過程中,java物件的版本號(serialVersionUID)要始終保持一致,如果再反序列化的過程中,發現物件的版本號和序列化時的版本號不一樣,會丟擲java.io.InvalidClassException異常 不可獲得相關的class位元組碼檔案

4、在java物件中的實體變數,可以通過transient或者static進行修飾

5、在一個宣告序列化的java物件中定義一個其他物件型別的成員變數,那這個其他物件也必須要宣告序列化,否則拋java.io.NotSerializableException異常,Student類中定義Teacher型別變數,Student類序列化,則Teacher類也必須序列化

6、子類序列化、父類不序列化,那麼在對子類進行序列化反序列化操作的時候,父類的中的相關變數會在子類中體現為丟失

文章只是本人在學習完一個知識點後,拋開所有學習資料,僅憑腦中的一些記憶寫下的,所以肯定有不足的地方

寫下來的目的是:在若干年的程式設計技術積累後,再到園子裡來回憶當年的學習痕跡,相信會有更多的感悟