- 问题描述
- 解决
- 完
jvm通过serialVersionID识别唯一的序列化类,而这个ID的计算因类的内容、java版本不同而不同.虽然不声明此变量时:jvm会自动生成ID,但为了防止反序列化类出错,Serializable接口文档依旧墙裂建议手动设置它
如果一个可序列化的类没有明确地声明 serialVersionUID,那么序列化运行时将根据该类的各个方面为该类计算一个默认的 serialVersionUID 值,如 Java™ Object Serialization Specification 中所述。然而,强烈建议所有可序列化的类明确地声明 serialVersionUID 值,因为默认的 serialVersionUID 计算对类的细节非常敏感,这些细节可能会因编译器实现的不同而不同,因此在反序列化时可能会导致意外的 InvalidClassExceptions。
Intellij IEDA提供了计算serialVersionID的方式,但是默认未开启
解决开启检查未设置ID的选项:在Setting-Editor-Inspections-Java-Serialization issues
之后当实现了Serializable接口的类未定义ID时就会报错
点击即可生成serialVersionID,无需手动生成了
欢迎在评论区留言,欢迎关注我的CSDN @Ho1aAs



