序列化版本号(serialVersionUID) 主要用在 Java 序列化机制 里,用来 标识一个类的版本。
序列化版本号就是“类结构的身份证号”,用来判断 反序列化时,字节流里的类和当前代码里的类是不是兼容的。
当你把一个对象 序列化(存成字节流 / 写文件 / 网络传输),后来又 反序列化(读回来) 时:
InvalidClassExceptionclass User implements Serializable {
String name;
}
class User implements Serializable {
String name;
int age;
}
class User implements Serializable {
private static final long serialVersionUID = 1L;
String name;
}
✅ 建议永远显式写
private static final long serialVersionUID = 1L;
否则:
自动生成的 UID 可能不一样,导致 老数据读不了
改 serialVersionUID 的几种情况:
| 情况 | 是否改 UID |
|---|---|
| 加字段 | ❌ 不改 |
| 改方法 | ❌ 不改 |
| 删字段 | ⚠️ 可考虑改 |
| 改字段类型 | ✅ 改 |
| 不兼容旧数据 | ✅ 改 |
serialVersionUID 就是用来防止“类变了,但旧数据还能乱读”的安全锁。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。