java.io.notserializableexception序列化錯誤


解決:使用對象序列化, implements Serializable 

 

redis的存儲對象序列化與反序列化

   當一個類實現了Serializable接口(該接口僅為標記接口,不包含任何方法定義),表示該類可以序列化.序列化的目的是將一個實現了Serializable接口的對象轉換成一個字節序列,可以。 把該字節序列保存起來(例如:保存在一個文件里),以后可以隨時將該字節序列恢復為原來的對象。甚至可以將該字節序列放到其他計算機上或者通過網絡傳輸到其他計算機上恢復,只要該計 算機平台存在相應的類就可以正常恢復為原來的對象。 實現:要序列化一個對象,先要創建某些OutputStream對象,然后將其封裝在一個ObjectOutputStream對象內,再調用writeObject()方法即可序列化一個對象;反序列化也類似。
注意:使用對象流寫入到文件是不僅要保證該對象是序列化的,而且該對象的成員對象也必須是序列化的
   關於Serializable接口的類中的serialVersionUID:
  serialVersionUID是long類型的。在Eclipse中有兩種生成方式:
    默認的是1L:private static final long serialVersionUID = 1L;
    另外一個則是根據類名、接口名、成員方法以及屬性等生成一個64位的哈希字段:
  private static final long serialVersionUID = 3969438177161438988L;
serialVersionUID主要是為了解決對象反序列化的兼容性問題。
如果沒有提供serialVersionUID,對象序列化后存到硬盤上之后,再增加或減少類的filed。這樣,當反序列化時,就會出現Exception,造成不兼容問題。
但當serialVersionUID相同時,它就會將不一樣的field以type的缺省值反序列化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM