java 序列化的說明

  • 當父類繼承Serializable接口,所有子類都可以被序列化
  • 子類實現了Serializable接口,父類沒有,父類中的屬性不能序列化(不報錯,數據會丟失),但是子類中屬性人能正確序列化
  • 如果序列化的屬性是對象,這個對象也必須實現Serializable接口,否則會報錯
  • 在反序列化時,如果對象的屬性有修改或刪減,修改的部分屬性會丟失,但不會報錯
  • 在反序列化時,如果serialVersionUID被修改,那麼反序列化時會失敗
  • 如果一個父類沒有實現Serializable接口,他的內部類如果不是static的,即使實現了序列化接口,也會序列失敗。因爲非靜態內部類會保存一個指向父類的類型this變量,而序列化類的所有屬性必須實現序列化接口,所以要將內部類設置成靜態類
  • List或者Map容器中包含的泛型類型也必須實現Serializable接口,否則也會報java.io.NotSerializableException
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章