java序列化serialVersionUID-的作用-代码详解

java序列化serialVersionUID-的作用-代码详解

  • 1.操作环境
  • 2.serialVersionUID的作用
  • 3.代码演示
    • 3.1.反序列化-正常
    • 3.2.反序列化-异常-InvalidClassException
    • 3.3.反序列化-异常解决-添加serialVersionUID
  • 【代码地址】

1.操作环境

JDK8
lombok-1.18.10

2.serialVersionUID的作用

在反序列化时,避免InvalidClassException

3.代码演示

3.1.反序列化-正常

3.1.1一个不存在 serialVersionUID 的实体类,共 ( name1 name2 age1 age2 ) 四个属性
java序列化serialVersionUID-的作用-代码详解_第1张图片


3.1.2.将对象序列化后存储到 “序列化.txt文件”中
java序列化serialVersionUID-的作用-代码详解_第2张图片
查看文件内的信息在这里插入图片描述


3.1.3.执行反序列化操作,把文件内的信息转成对象
java序列化serialVersionUID-的作用-代码详解_第3张图片

3.2.反序列化-异常-InvalidClassException

**3.2.1.异常出现–注释掉实体类中的两个属性 name1 age1,然后执行反序列化会是什么样呢?
java序列化serialVersionUID-的作用-代码详解_第4张图片
会抛出 InvalidClassExceptionjava序列化serialVersionUID-的作用-代码详解_第5张图片

3.3.反序列化-异常解决-添加serialVersionUID

3.3.1.在实体类中 添加 private static final long serialVersionUID = 1L;
添加 UID后重复 3.1 和 3.2 的操作,会发现异常消失,并且注释的属性会自动清除,新增的属性会进行赋空值操作


java序列化serialVersionUID-的作用-代码详解_第6张图片

执行序列化对象操作,并将信息保存到文件
java序列化serialVersionUID-的作用-代码详解_第7张图片

查看文件内的信息
java序列化serialVersionUID-的作用-代码详解_第8张图片

尚未修改实体类,此时进行反序列化操作,查看输出信息
java序列化serialVersionUID-的作用-代码详解_第9张图片

修改实体类,注释掉 name1 age1 新增属性 nage3 age3
java序列化serialVersionUID-的作用-代码详解_第10张图片


修改实体类后,反序列化查看输出信息
java序列化serialVersionUID-的作用-代码详解_第11张图片

【代码地址】



.........

在这里插入图片描述

你可能感兴趣的:(java,jdk,maven)