Tag: UID预览模式: 普通 | 列表
08-01
08

Java Serialization UID 问题的完美解决方案

1.问题描述:
一个老版本的object "hello.HelloWorld" 序列化然后保存到数据库中了。
我们定义数据库中保存的这个对象为1.0版本。(1.0版本参考hello.HelloWorld1)

此时对老版本的object "hello.HelloWorld"进行了修改,形成了新版本的class(定义为2.0版本)
(2.0版本参考hello.HelloWorld2)
此时从数据库中去取数据,会报告如下错误:
hello.HelloWorld; local class incompatible: stream classdesc serialVersionUID = -5863503448069391657, local class serialVersionUID = 5362978033127103447

查看更多...

Tags: Serialization UID 序列化

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 640
08-01
08

java文件中为什么会有serialVersionUID

一些java类中为什么需要重载 serialVersionUID 属性。
在Java中,软件的兼容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下,用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息。
serialVersionUID来解决这些问题,新增的serialVersionUID必须定义成下面这种形式:static final long serialVersionUID=-2805284943658356093L;。其中数字后面加上的L表示这是一个long值。通过这种方式来解决不同的版本之间的串行话问题。

提纲:
━━━━━━━━
一、概述
二、Java串行化
三、引入版本编号
四、结束语
━━━━━━━━

查看更多...

Tags: serialVersionUID 串行 版本 UID

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 495