(转)java 序列化ID的作用
2024-08-21 12:25:13
序列化ID的作用:
其实,这个序列化ID起着关键的作用,它决定着是否能够成功反序列化!简单来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。
序列化ID如何产生:
当我们一个实体类中没有显示的定义一个名为“serialVersionUID”、类型为long的变量时,Java序列化机制会根据编译时的class自动生成一个serialVersionUID作为序列化版本比较,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID。譬如,当我们编写一个类时,随着时间的推移,我们因为需求改动,需要在本地类中添加其他的字段,这个时候再反序列化时便会出现serialVersionUID不一致,导致反序列化失败。那么如何解决呢?便是在本地类中添加一个“serialVersionUID”变量,值保持不变,便可以进行序列化和反序列化。
使用:
public class Person implements Serializable {
//序列化ID
private static final long serialVersionUID = -5809782578272943999L;
// ...
}
没有序列化id时候,如果在类中增加字段,会产生异常:
java.io.InvalidClassException
参考
最新文章
- Effective前端1:能使用html/css解决的问题就不要使用JS
- Jquery dom搜索之siblings()方法
- PO/VO/POJO/BO/VO图解
- 大数据处理的三种框架:Storm,Spark和Samza
- Ansible安装及简单使用备注
- LeetCode算法题-Can Place Flowers(Java实现)
- 运维面试题之k8s
- 7-27 Codeforces Round #499 (Div. 2)
- Struts2源码解析2
- Java API实现Hadoop文件系统增删改查
- CSDN博客文章的备份及导出电子书CHM
- 异步加载script,提高前端性能(defer和async属性的区别)
- c++ demo
- django 运行脚本
- HDOJ2089 不要62
- 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包)
- 使用Linux命令行测试网速-----speedtest-cli
- windows下自动启动Redis隐藏命令行窗口
- vsftpd文件服务器安装与配置
- tar.gz和bin,以及rpm,deb等linux后缀的文件的区别