日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

serialVersionUID的重要性,及Idea自動生成 serialVersionUID的設置

作者:拾年一劍 更新時間: 2022-08-19 編程語言

文章目錄

    • 什么要序列化對象?
    • 什么是 serialVersionUID ?
    • serialVersionUID 有什么用 ?
    • idea一鍵自動生成序列化serialVersionUID

什么要序列化對象?

把對象轉換為字節序列的過程稱為對象的序列化
把字節序列恢復為對象的反序列化

對象序列化主要有兩種用途:

  1. 把對象的字節序列永久的保存到硬盤上,通常存放在一個文件中
  2. 在網絡上傳送對象的字節序列

什么是 serialVersionUID ?

顧名思義,serialVersionUID是序列化版本號。
所有可序列化的類,都有一個靜態serialVersionUID屬性;
如果我們沒有顯示定義serialVersionUID,接口會默認生成一個SerialversionUID

簡單看下Serializable接口的說明

If a serializable class does not explicitly declare a serialVersionUID,
   then the serialization runtime will calculate a default 
   serialVersionUID value for that class based on various aspects of the class, 
  as described in the Java(TM) Object Serialization Specification. 

serialVersionUID 有什么用 ?

serialVersionUID 用來標識一個可序列化類的版本。
當我們序列化一個對象時,會將 serialVersionUID 一并寫出
當我們反序列化一個對象時,會將讀入的serialVersionUID與當前類的serialVersionUID作比較。如果相同,則反序列化成功;如果不同,則反序列化失敗。

如果我們顯示的定義了serialVersionUID,那么即便我們對類進行了修改,之前序列化的對象依然能夠反序列化成功,保證了向前兼容的功能。而如果我們不想向前兼容或者類的改動過大,無法向前兼容,我們可以手動更改 serialVersionUID 的值。

總結:
非常強烈建議用戶自己定義一個SerialversionUID,因為默認的SerialversionUID對于class的細節非常敏感,反序列化的時候可能會導致InvalidClassException這個異常。
顯式定義serialVersionUID給了程序員更大的操作空間,是否向前兼容由程序員來決定。

idea一鍵自動生成序列化serialVersionUID

  1. 打開File -> Settings -> Editor -> Inspections
  2. 選擇Java -> Serialization issues -> Serializable class without ‘serialVersionUID’,將其勾選上,再點擊Apply->OK
  3. 光標移動到類上按Alt+Enter,就可以一鍵生成serialVersionUID

原文鏈接:https://blog.csdn.net/u014163312/article/details/126414620

欄目分類
最近更新