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/

相关推荐
计算机学姐11 分钟前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
前端小咸鱼一条19 分钟前
16.迭代器 和 生成器
开发语言·前端·javascript
My的梦想已实现21 分钟前
关于JAVA Springboot集成支付后打包JAR之后报安全错误的处理
java·spring boot·jar
小陈工27 分钟前
2026年3月31日技术资讯洞察:AI智能体安全、异步编程突破与Python运行时演进
开发语言·jvm·数据库·人工智能·python·安全·oracle
ooseabiscuit37 分钟前
SpringBoot3整合FastJSON2如何配置configureMessageConverters
java
·醉挽清风·44 分钟前
学习笔记—Linux—信号阻塞&信号捕捉
linux·笔记·学习
Hello_Embed1 小时前
嵌入式上位机开发入门(四):TCP 编程 —— Client 端实现
网络·笔记·网络协议·tcp/ip·嵌入式
ok_hahaha1 小时前
java从头开始-黑马点评-Redission
java·开发语言
无巧不成书02181 小时前
Java面向对象零基础实战:从Employee类吃透自定义类核心,掌握封装精髓
java·开发语言·java入门·面向对象·自定义类·employee类·java核心技术
小江的记录本1 小时前
【注解】常见 Java 注解系统性知识体系总结(附《全方位对比表》+ 思维导图)
java·前端·spring boot·后端·spring·mybatis·web