栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java serialVersionUID 序列化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java serialVersionUID 序列化

serialVersionUID 

serialVersionUID:序列化和反序列化过程中进行核验的一个版本号

serialVersionUID适用于Java的序列化机制。

可序列化类可以通过声明名为 serialVersionUID的字段显式声明自己的 serialVersionUID,且该字段必须是static,final的且类型为long。

Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。

具体的序列化过程是这样的:序列化操作的时候系统会把当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会去检测文件中的serialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败。

serialVersionUID有两种显示的生成方式:        
一是默认的1L,比如:private static final long serialVersionUID = 1L;        
二是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:        
private static final  long   serialVersionUID = xxxxL;

一些java类中为什么需要重载 serialVersionUID 属性

在Java中,软件的兼容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下, 用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息。serialVersionUID来解决这些问题,新增的serialVersionUID必须定义成下面这种形式:

private static final long serialVersionUID = 1L;

其中数字后面加上的L表示这是一个long值。 通过这种方式来解决不同的版本之间的串行化(序列化)问题。 

把对象转换为字节序列的过程称为对象的序列化。

把字节序列恢复为对象的过程称为对象的反序列化。

序列化是将对象的状态信息转换为可以存储或传输的形式的过程。

对象的序列化主要有两种用途:

   1.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中

   2.在网络上传送对象的字节序列

Java编程中的序列化

把一个Java对象写入到硬盘或者传输到网络上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节流。对于这种通用的操作,就出现了java的序列化的概念。在Java的OutputStream类下面的子类ObjectOutputStream类就有对应的WriteObject(Object object) 其中要求对应的object实现了java的序列化的接口。

在使用tomcat开发JavaEE相关项目的时候,我们关闭tomcat后,相应的session中的对象就存储在了硬盘上,如果我们想要在tomcat重启的时能够从tomcat上面读取对应session中的内容,那么保存在session中的内容就必须实现相关的序列化操作,还有jdbc加载驱动用的就是反序列化,将字符串变为对象。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号