序列化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

参考

java 序列化ID的作用

最新文章

  1. Effective前端1:能使用html/css解决的问题就不要使用JS
  2. Jquery dom搜索之siblings()方法
  3. PO/VO/POJO/BO/VO图解
  4. 大数据处理的三种框架:Storm,Spark和Samza
  5. Ansible安装及简单使用备注
  6. LeetCode算法题-Can Place Flowers(Java实现)
  7. 运维面试题之k8s
  8. 7-27 Codeforces Round #499 (Div. 2)
  9. Struts2源码解析2
  10. Java API实现Hadoop文件系统增删改查
  11. CSDN博客文章的备份及导出电子书CHM
  12. 异步加载script,提高前端性能(defer和async属性的区别)
  13. c++ demo
  14. django 运行脚本
  15. HDOJ2089 不要62
  16. 在 R 中估计 GARCH 参数存在的问题(基于 rugarch 包)
  17. 使用Linux命令行测试网速-----speedtest-cli
  18. windows下自动启动Redis隐藏命令行窗口
  19. vsftpd文件服务器安装与配置
  20. tar.gz和bin,以及rpm,deb等linux后缀的文件的区别

热门文章

  1. 二叉搜索树的第k个节点
  2. rpm和yum
  3. python设计模式第二十二天【备忘录模式】
  4. 多IP地址--笔记
  5. query中对应的OnSetText和onGetText事件
  6. cookie中的小错误
  7. codeforces467C
  8. StringBuffer作为参数传递的问题
  9. 适用于Centos6.x系统的15项优化脚本
  10. BZOJ5417[Noi2018]你的名字——后缀自动机+线段树合并