序列化接口的id有什么用
来源:互联网 发布:绿教的危害 知乎 编辑:程序博客网 时间:2024/04/28 19:31
序列化Serializable的方式特别简单 实现Serializable接口,再在类中声明如下这一个属性即可。
private static final long serialVersionUID = -3928832861296252415L;
Serializable序列化的工作机制:
序列化的时候系统会把当前类的serialVersionUID 写入序列化的文件中(也可能是其他中介),当反序列化的时候系统会去检测文件中的serialVersionUID ,看它是否和当前类的serialVersionUID 一致,如果一致就说明序列化的类的版本和当前类的版本是相同的,这个时候可以成功反序列化,否则就说明当前类和序列化的类相比发生了某些变换,比如成员变量的数量,类型可能发生了改变,这个时候就会抛异常,反序列化失败。
serialVersionUID作用:
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
那么serialVersionUID 是如何生成,生成规则是怎么样的呢?
默认情况下,也就是不声明serialVersionUID 属性情况下,系统会按当前类的成员变量计算hash值并赋值给serialVersionUID 。
所以,结论就出来了。声明serialVersionUID ,可以很大程度上避免反序列化过程的失败。比如当版本升级后,我们可能删除了某个成员变量,也可能增加了一些新的成员变量,这个时候我们的反序列化依然能够成功,程序依然能够最大程度地恢复数据,相反,如果不指定serialVersionUID ,程序就会挂掉。
如果类结构发生了非常规性改变,比如修改了类名,类型等,这个时候尽管serialVersionUID 验证通过了,但是反序列化过程
还是会失败,因为类结构有了毁灭性的改变。
- 序列化接口的id有什么用?
- 序列化接口的id有什么用
- 序列化接口的id有什么用
- 序列化接口的id有什么用?—— Java经典面试题系列
- implements serializable实现序列化接口有什么作用?
- c#的序列化究竟有什么用?
- 接口有什么用?
- C#的接口有什么用?
- id 声明的对象有什么特性?
- 接口到底有什么用?
- 接口到底有什么用
- 接口到底有什么用
- 接口到底有什么用
- java 序列化定义的 serialVersionUID 有什么作用
- 数据序列化有什么作用啊?
- java序列化有什么作用
- java 序列化有什么作用
- 将数据序列化有什么作用
- error C3646: 未知重写说明符
- 解决异常:org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current
- Bi-shoe and Phi-shoe [欧拉函数][贪心]
- 使用分享多张图片到微信,QQ,微博
- 系统日志解决方案——slf4j
- 序列化接口的id有什么用
- 我认为的最小二乘法的通俗讲解
- Java单例模式
- 2017年视频监控与存储技术变革发展预测
- 【前端】-HTML
- 计算机会议排名等级
- 高斯分布函数解析
- MongoDB用户授权和管理
- UE4 委托及事件声明 (DelegateCombinations.h)