IntelliJ IDEA 中自動生成 serialVersionUID 的方法
1、什麼是序列化?
序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀
寫操作,也可將流化後的物件傳輸於網路之間。序列化是為了解決在對物件流進行讀寫操作時所引發的問題。
序 列 化 的 實 現 : 將 需 要 被 序 列 化 的 類 實 現 Serializable 接 口 , 該 接 口 沒 有 需 要 實 現 的 方 法 ,
implements Serializable 只是為了標註該物件是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造
一個 ObjectOutputStream(物件流)物件,接著,使用 ObjectOutputStream 物件的 writeObject(Object obj)方法就
可以將引數為 obj 的物件寫出(即儲存其狀態),要恢復的話則用輸入流。
2、當我們用 IntelliJ IDEA 編寫類並實現 Serializable(序列化)介面的時候,可能會遇到這樣一個問題,那就是:
無法自動生成serialVersionUID.
而serialVersionUID又是一個非常重要的欄位,因為 Java 的序列化機制是通過在執行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM 會把傳來的位元組流中的serialVersionUID與本地相應實體(類)的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常。
一般來說,定義serialVersionUID的方式有兩種,分別為:
採用預設的1L,具體為private static final long serialVersionUID = 1L;
根據類名、介面名、成員方法及屬性等來生成一個64位的雜湊欄位,例如 private static final long serialVersionUID = XXXL;
而 Java 類進行序列化也兩個主要目的,分別為:
把物件的位元組序列永久地儲存到硬碟上,通常存放在一個檔案中;
在網路上傳送物件的位元組序列。
在這裡,我們就一起來看看如何利用 IntelliJ IDEA 自動生成serialVersionUID.
3、安裝GenerateSerialVersionUID外掛。開啟setting(ctrl+alt+s)
4 、安裝,restart。
5、配置Inspections,如圖步驟,勾選serialVersionUID
6、大功告成。