什么是serialVersionUID
serialVersionUID表示:“串行化版本统一标识符”(serial version universal identifier),简称UID
serialVersionUID必须定义成下面这种形式:static final long serialVersionUID = xxxL;
- 一个是默认的1L,比如:private static final long serialVersionUID = 1L;
- 一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,
为什么要serialVersionUID
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
- 不一致的serialVersionUID,是无法序列化/反序列化
- 如果未显示设置serialVersionUID值,假设修改类的某个field,新生成的
serialVersionUID 与即将要反序列化的serialVersionUID 不一致,导致失败 - 设置一样的serialVersionUID ,可以让新版本的与老版本兼容,完成序列化,只不过发生改动的属性会变成null
网友评论