實體類中如何自動生成serialVersionUID
1. 為什麼要實現序列化介面Serializable?
答:實現序列化介面Serializable的目的是為了類可持久化,Java中的序列化機制能夠將一個例項物件資訊寫入到一個位元組流中(只序列化物件的屬性值,而不會去序列化方法),序列化後的物件可用於網路傳輸(遠端),或者持久化到資料庫、磁碟中(本地儲存)。為系統的分佈和異構部署提供先決條件。若沒有序列化,現在我們所熟悉的RPC(Remote Procedure Call,遠端呼叫),物件資料庫都不可能存在。
2.serialVersionUID是幹什麼用的?
serialVersionUID適用於java序列化機制。簡單來說,JAVA序列化的機制是通過判斷類的serialVersionUID來驗證的版本一致的。在進行反序列化時,JVM會把傳來的位元組流中的serialVersionUID於本地相應實體類的serialVersionUID進行比較。如果相同說明是一致的,可以進行反序列化,否則會出現反序列化版本一致的異常,即是InvalidCastException。
3.實體類中如何自動生成serialVersionUID?
(1)在IDEA中生成UID,首先找到檔案選單下的設定
(2)在Setting中,根據路徑Editor->Inspections->Java進入下圖所示
(3)在Java目錄下,根據路徑Serialization issues -> Serializable class without 'serialVersionUID',在其後面打上勾,儲存應用(apply)就行了。
(4)看一下效果。
a.實體類會有提示
b.Alt + Enter 會出現如下圖所示選項,確認就行
c.生成了serialVersionUID