序列化版本号(serialVersionUID) 主要用在 Java 对象序列化/反序列化 场景中,用来 标识类的版本,确保序列化和反序列化时 类结构一致。
当一个类实现了 Serializable 接口后,Java 会把对象转换成字节流(序列化),之后还能再恢复成对象(反序列化)。
serialVersionUID 就是 JVM 用来判断:
“现在要反序列化的字节流,是不是由同一个版本的类生成的?”
private static final long serialVersionUID = 1L;
假设:
如果没有版本号或版本号不一致,JVM 会认为:
“类已经变了,不能安全还原”
然后抛出:
InvalidClassException
private static final long serialVersionUID = 1L;
| 场景 | 是否需要 |
|---|---|
| 本地临时序列化 | 不太重要 |
| Redis / 文件存储对象 | ✅ 非常重要 |
| RPC(Dubbo、RMI) | ✅ 必须 |
| 跨服务传输对象 | ✅ 强烈建议 |
✅ 应该改的情况
❌ 不用改的情况
transient 字段serialVersionUID 是 Java 序列化机制的“版本身份证”,用来保证对象的序列化和反序列化在类演进过程中安全、可控。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。