網站首頁 編程語言 正文
文章目錄
- 什么要序列化對象?
- 什么是 serialVersionUID ?
- serialVersionUID 有什么用 ?
- idea一鍵自動生成序列化serialVersionUID
什么要序列化對象?
把對象轉換為字節序列的過程稱為對象的序列化
把字節序列恢復為對象的反序列化
對象序列化主要有兩種用途:
- 把對象的字節序列永久的保存到硬盤上,通常存放在一個文件中
- 在網絡上傳送對象的字節序列
什么是 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
- 打開File -> Settings -> Editor -> Inspections
- 選擇Java -> Serialization issues -> Serializable class without ‘serialVersionUID’,將其勾選上,再點擊Apply->OK
- 光標移動到類上按Alt+Enter,就可以一鍵生成serialVersionUID
原文鏈接:https://blog.csdn.net/u014163312/article/details/126414620
相關推薦
- 2022-03-27 Python編程入門指南之函數_python
- 2022-02-09 linux下源碼包安裝的服務管理_Linux
- 2022-02-02 es 同步索引報錯:ElasticSearch ClusterBlockException[bloc
- 2022-03-26 C語言goto語句簡單使用詳解_C 語言
- 2022-11-15 SQL?Server?ISNULL?不生效原因及解決_MsSql
- 2022-10-17 在?C#?中使用?Span<T>?和?Memory<T>?編寫高性能代碼的詳
- 2022-12-05 useReducer?createContext代替Redux原理示例解析_React
- 2022-09-25 Linux基礎組件之基于循環數組的無鎖隊列
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支