1. 程式人生 > >idea自動生成UUID和解決辦法

idea自動生成UUID和解決辦法

        序列化執行時使用一個稱為 serialVersionUID 的版本號與每個可序列化類相關聯,該序列號在反序列化過程中用於驗證序列化物件的傳送者和接收者是否為該物件載入了與序列化相容的類。如果接收者載入的該物件的類的 serialVersionUID 與對應的傳送者的類的版本號不同,則反序列化將會導致 InvalidClassException。可序列化類可以通過宣告名為 "serialVersionUID" 的欄位(該欄位必須是靜態 (static)、最終 (final) 的 long 型欄位)顯式宣告其自己的 serialVersionUID:

      如果可序列化類未顯式宣告 serialVersionUID,則序列化執行時將基於該類的各個方面計算該類的預設 serialVersionUID 值,如“Java(TM) 物件序列化規範”中所述。不過,強烈建議所有可序列化類都顯式宣告 serialVersionUID 值,原因計算預設的 serialVersionUID 對類的詳細資訊具有較高的敏感性,根據編譯器實現的不同可能千差萬別,這樣在反序列化過程中可能會導致意外的 InvalidClassException。

      因此,為保證 serialVersionUID 值跨不同 java 編譯器實現的一致性,序列化類必須宣告一個明確的 serialVersionUID 值。還強烈建議使用 private 修改器顯示宣告 serialVersionUID(如果可能),原因是這種宣告僅應用於立即宣告類 -- serialVersionUID 欄位作為繼承成員沒有用處。

使用 Eclipse 或 MyEclipse 的同學可能知道,如果 implements Serializable 介面時,會提示你生成 serialVersionUID。

但 Intellij IDEA 預設沒啟用這個功能。

正常情況下,滑鼠點選類名,⌥ Option + ↩︎ Return/Enter鍵就會出現生成UUID選項,即:

有時候⌥ Option + ↩︎ Return/Enter沒有UUID選項,解決辦法

第一種情況:

Settings -> keymap檢視快捷鍵是否正確,預設情況是對的

Setting->Inspections->Serialization issues->Serializable class without ’serialVersionUID’勾選