Java 笔记 serialVersionUID

serialVersionUID 是用于序列化机制的一个 版本控制标识符,用于确保反序列化时类的兼容性。

当一个类实现了 Serializable 接口后,Java 会给这个类自动生成一个 唯一的标识符(serialVersionUID)。这个 ID 在序列化和反序列化之间对比,如果不一致,会导致反序列化失败,抛出异常:

java 复制代码
java.io.InvalidClassException: 类的 serialVersionUID 不匹配

若不定义,JVM 会自动生成一个 serialVersionUID,但生成规则依赖于:

  • 类名

  • 实现的接口

  • 方法和字段等结构细节

所以一旦你修改了类结构(比如加了一个字段),默认的 serialVersionUID 就变了,反序列化旧对象时就会报错。

✅ 生成方式(推荐工具生成)

在 IDE(如 IntelliJ IDEA 或 Eclipse)中:

  • 鼠标右键提示 → "Add serialVersionUID"

  • 自动生成如:

java 复制代码
private static final long serialVersionUID = 837456293846593845L;

✅ serialVersionUID 的使用场景总结

场景 是否需要定义 serialVersionUID 原因
类可能会序列化/反序列化 ✅ 建议手动定义 保证兼容性
类不会序列化 ❌ 可以不定义 没必要
序列化用于网络传输、缓存、持久化等 ✅ 强烈建议定义 防止版本不一致导致反序列化失败

写小说也写代码,左手架空世界,右手现实逻辑。

📚 欢迎来看博客,起点同笔名在写小说,欢迎来找我玩。

https://my.qidian.com/author/433910170/

相关推荐
wangbing11251 分钟前
平台介绍-动态更换登录背景图
java
tryxr3 分钟前
继承存在的意义、特点、使用方法
java·开发语言·接口
lkbhua莱克瓦249 分钟前
基础-函数
开发语言·数据库·笔记·sql·mysql·函数
清水白石00821 分钟前
《深入 Python 上下文管理器:contextlib.contextmanager 与类实现方式的底层差异全景解析》
开发语言·python
程序员佳佳23 分钟前
GPT-4时代终结?GPT-5.2与Banana Pro实测数据公开,普通开发者如何接住这泼天富贵
开发语言·python·gpt·chatgpt·重构·api·midjourney
tbRNA25 分钟前
Java 基础入门易错知识点(三)
java·开发语言
yuxb7332 分钟前
Kubernetes核心组件详解与实践:Service
笔记·kubernetes
韩立学长44 分钟前
【开题答辩实录分享】以《基于SSM的电影售票管理系统的设计与实现》为例进行选题答辩实录分享
java·spring·servlet
问道飞鱼1 小时前
【Rust编程语言】Rust数据类型全面解析
开发语言·后端·rust·数据类型
会飞的胖达喵1 小时前
Qt自动信号槽连接机制:深入解析与应用实践
开发语言·qt