天天看點

idea自動生成 serialVersionUID 的設定

https://blog.csdn.net/u014750606/article/details/80040130

實作Serializable接口的目的是為類可持久化,比如在網絡傳輸或本地存儲,為系統的分布和異構部署提供先決條件。若沒有序列化,現在我們所熟悉的遠端調用,對象資料庫都不可能存在,

serialVersionUID适用于java序列化機制。簡單來說,JAVA序列化的機制是通過判斷類的serialVersionUID來驗證的版本一緻的。在進行反序列化時,JVM會把傳來的位元組流中的serialVersionUID于本地相應實體類的serialVersionUID進行比較。如果相同說明是一緻的,可以進行反序列化,否則會出現反序列化版本一緻的異常,即是InvalidCastException。

具體序列化的過程是這樣的:序列化操作時會把系統目前類的serialVersionUID寫入到序列化檔案中,當反序列化時系統會自動檢測檔案中的serialVersionUID,判斷它是否與目前類中的serialVersionUID一緻。如果一緻說明序列化檔案的版本與目前類的版本是一樣的,可以反序列化成功,否則就失敗;

serialVersionUID有兩種顯示的生成方式:

一是預設的1L,比如:private static final long serialVersionUID = 1L;

二是根據包名,類名,繼承關系,非私有的方法和屬性,以及參數,傳回值等諸多因子計算得出的,極度複雜生成的一個64位的哈希字段。基本上計算出來的這個值是唯一的。比如:private static final long serialVersionUID = xxxxL;

注意:顯示聲明serialVersionUID可以避免對象不一緻

idea設定自動生成 serialVersionUID 的方式如下圖所示

輸入:serialV

idea自動生成 serialVersionUID 的設定

設定之後,選中對應的類名,然後按 alt+enter 快捷鍵 的情況如下所示

idea自動生成 serialVersionUID 的設定

完成效果

idea自動生成 serialVersionUID 的設定

繼續閱讀