序列化和反序列化時的注意點
阿新 • • 發佈:2019-01-01
序列化執行時使用一個稱為 serialVersionUID 的版本號與每個可序列化類相關聯,該序列號在反序列化過程中用於驗證序列化物件的傳送者和接收者是否為該物件載入了與序列化相容的類。如果接收者載入的該物件的類的 serialVersionUID 與對應的傳送者的類的版本號不同,則反序列化將會導致 InvalidClassException
。可序列化類可以通過宣告名為 "serialVersionUID"
的欄位(該欄位必須是靜態
(static)、最終 (final) 的 long
型欄位)顯式宣告其自己的 serialVersionUID:
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
InvalidClassException
。因此,為保證
serialVersionUID 值跨不同 java 編譯器實現的一致性,序列化類必須宣告一個明確的 serialVersionUID 值。還強烈建議使用 private