概述
通常我们在生成序列化对象时需要指定一个serialVersionUID。
为什么要设置序列化版本呢:
serialVersionUID字段表示类的序列化版本,用于反序列化时校验。如果反序列化时的类的serialVersionUID与序列化时不同,那么会抛出InvalidClassException异常。
必须是final和static修饰的,推荐使用private修饰,因为它不需要被继承使用,只在序列化和反序列化时使用。
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
如果类中没有这个字段,那么在运行时jvm会帮忙计算一个值。推荐用户给每一个有序列化能力的类明确指定一个serialVersionUID 。因为默认的计算方式是严重依赖于编译器的实现,可能导致反序列化的时候抛出InvalidClassException异常。
数组类型不能明确指定serialVersionUID,所以它们使用默认的计算值,但是反序列化的时候不需要校验serialVersionUID。
自动生成序列化ID方法
File -> Settings -> Editor -> Inspections -> 搜索 Serialization issues ,找到 Serializable class without ‘serialVersionUID’ ->打上勾,Apply->OK
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100298.html