SerialVersoinUID在序列化过程中有什么作用

 时间:2024-10-13 06:21:14

本文主要通过样例说明SerialVersoinUID在序列化过程中的用处

工具/原料

Intellij Idea 2017.1

一、举例

1、新建一个Student类,包含name和age两个属性

SerialVersoinUID在序列化过程中有什么作用

2、将光标移动到类名Student上,按下组合键ALT+ENTER打开快捷菜单,选择Add SerialVersionUID field,Idea会自动给当前类生成一个64位的哈希值作为SerialVersionUID

SerialVersoinUID在序列化过程中有什么作用SerialVersoinUID在序列化过程中有什么作用

3、添加一个测试类SerialVersionUIDTest,代码如下,用来将Student序列化到二进制文件,以及将文件反序列化到内存。其中序列化及反序列化函数分别为ser足毂忍珩ializeObject2File和reSerializeFile2Memery。

SerialVersoinUID在序列化过程中有什么作用SerialVersoinUID在序列化过程中有什么作用SerialVersoinUID在序列化过程中有什么作用

4、执行上面测试类,正常通过。此时给Student类增加一个sex属性,执行反序列化函数,依然能正常解析文件,只是新加的字段解析为null值。

SerialVersoinUID在序列化过程中有什么作用SerialVersoinUID在序列化过程中有什么作用

5、修改Student的SerialVersionUID,比如修改为22L

SerialVersoinUID在序列化过程中有什么作用

6、运行反序列化代函数,则会报出如下错误:local class incompatible: stream classdesc serialVersionUID = -4462353742126829820, local class serialVersionUID = 22这说明序列化ID不同时,则先前序列化的文件不能解析映射到新类中。综上所术,可以得知,如果想要新修改的类兼容老版本的类生成的序列化文件,则serialVersionUID一定不能修改。反之,如果想不兼容老版本的序列化文件,如需要更改类的serialVersionUID。

SerialVersoinUID在序列化过程中有什么作用
  • 如何使用ES6中的Map中的set方法设置key和value
  • 把Myeclipse中导入的jar包归类到reference中
  • Java中Serializable的作用
  • 如何使用ES6中的Map类型中的set方法和get方法
  • houdini16.5 slice提取属性数字在wrangle中写法
  • 热门搜索
    鲜奶可以加热吗 经期可以吃香蕉 副乳怎么减 咸宁旅游 聚能教育怎么样 平遥古城旅游攻略 王学圻怎么读 少白头是怎么回事 斗兽场怎么进 联想手机怎么截图