Java的序列化和反序列化,我所遇到的坑

2021-08-29 01:54:43 字數 392 閱讀 7825

**:

有時需要為物件做持久化,就是把記憶體裡的物件儲存到磁碟(暫且叫做磁碟吧,可以等同於sp、db、檔案、網路等)上,等以後需要這個物件的時候再從磁碟上還原到記憶體,因此需要序列化和反序列化。

如果使用objectoutputstream方式序列化,可能出現的坑如下:

坑1、類裡面一定要serialversionuid,否則舊資料會反序列化會失敗。

serialversionuid是根據該類名、方法名等資料生產的乙個整數,用來驗證版本是否一致。

如果不加這個字段,當你的類修改了字段,在反序列化的時候會直接報異常:invalidcastexception,導致無法完成反序列化。

坑2、一旦序列化儲存到磁碟操作後,就不要修改類名了,否則舊資料會反序列化會失敗。

舉個例子

java 序列化 反序列化

序列化 bytearrayoutputstream bytearrayoutputstream new bytearrayoutputstream objectoutputstream objectoutputstream null try catch exception e finally byt...

序列化和反序列化 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...