private static final long serialVersionUID = 1L 干什么的?
private static final long serialVersionUID = 1L;是定义以一个序列号。java源码里有大量的类都有这么一个序列号。目的就是把java对象序列化而后进行保存。
java的序列化机制式通过判断类的serialVersionUID来验证版本的一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastException。
serialVersionUID有两种显示的生成方式:
一是默认的1L,比如:private static final long serialVersionUID = 1L;
二是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
private static final long serialVersionUID=xxxxL;
当一个类实现了Serializable接口,如果没有显式的定义serialVersionUID变量的时候,java序列化机制会根据编译的Class自动生成一个serialVersionUID当作序列化版本使用,这种情况下,如果Class文件(类名、方法名等)没有发生变化(增加空格、换行、增加注释等等),就算编译再多次,serialVersionUID也不会变化的。
这个东西是用来serialization 的key,A和B相互之间传输信息,用seralize,但是相互之间把解包之后的文件进行了更改,如果你程序中不加这个,相互之间再传输,会因为这个key不一样,而失败。所以,在程序中定义,会使软件版本兼容,无论怎么改,都可以相互序列化和反序列化。
Java中,如果class实现了序列化接口,你没有加这一行,eclipse会自动给warning,建议加上,否则,JVM会自动编译生成一个序列号,这样传输会造成反序列化失败。因为不同的JVM之间的序列化算法是不一样的,不利于程序的移植。
一般情况下,建议序列化的class都给一个序列化的ID,这样可以保证序列化的成功,版本的兼容性。
http://blog.csdn.net/hulefei29/article/details/2823221
http://www.blogjava.net/invisibletank/archive/2007/11/15/160684.html
http://www.blogjava.net/sealyu/archive/2009/04/21/266759.html
private static final long serialVersionUID = 1L;是用来做什么的_爱飞的光的博客-CSDN博客
private static final long serialVersionUID = 1L 干什么的?_leetcode 解题思路-CSDN博客
private static final long serialVersionUID = 1L 干什么的?相关推荐
- private static final long serialVersionUID = 1L;详解
public class User implements Serializable {/*** serialVersionUID*/private static final long serialVe ...
- private static final long serialVersionUID=1L 是什么意思
private static final long serialVersionUID=1L意思是定义程序序列化ID. 序列化ID等同于身份验证,主要用于程序的版本控制,维护不同版本的兼容性以及避免在程 ...
- private static final long serialVersionUID = 1L详解
public class User implements Serializable {/*** serialVersionUID*/private static final long serialVe ...
- private static final long serialVersionUID = 1L 的作用
1.这句话的意思是定义程序序列化ID 2.什么是序列化? Serializable,Java的一个接口,用来完成java的序列化和反序列化操作的: 任何类型只要实现了Serializable接口,就可 ...
- private static final long serialVersionUID=1L作用
private static final long serialVersionUID=1L意思是定义程序序列化ID. 序列化ID等同于身份验证,主要用于程序的版本控制,维护不同版本的兼容性以及避免在程 ...
- private static final long serialVersionUID = 1L 是什么意思
serialVersionUID 称为序列化版本号,这个多用于实现了Serializable的类中,适用场景是类的序列化,当我们没有定义这个值得时候虚拟机会根据类的属性生成一个独一无二的序列化版本号. ...
- private static final long serialVersionUID是什么意思
今天在看项目源码的时候发现struts的action里面有 private static final long serialVersionUID = -1672970955045193907L; 这样 ...
- java中private string_java 中private static final String string的介绍final的意思
java 中private static final String string的介绍final的意思: final的意思是这个string类型的东西不能再被改变.也可以说是常量 static说明这个 ...
- 动态代理jdk和cglib区别、注意事项(private,static,final)、spring aop原理
文章目录 一.代理简聊 二.静态代理 三.动态代理 1.jdk动态代理 2.cglib动态代理 四.动态代理总结.注意事项 1.jdk动态代理与cglib的区别. 2.注意事项及分析. 五.aop原理 ...
最新文章
- Linux Mint 13 root登录
- android高仿微信拍照、多选、预览、删除(去除相片)相冊功能
- java情书_Java情书已写好,就差妹子了!
- androidpn php,服务器推送消息到Android终端方法
- Linux之父新年首次“炮轰”:英特尔在扼杀整个 ECC 行业
- PLSQL Developer使用
- oracle 序列号连号,火并VariPrint技术指标(HaiyaaVariPrint.PDF
- 基于vue的html编辑器,基于vue富文本编辑器的慢慢人生路
- 用Python多线程抓取并验证代理
- 转(Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案 )
- vs2013界面内容_我在2013年阅读的内容
- Ubuntu18.04安装win7虚拟机
- CLIENT_ACKNOWLEDGE机制测试
- 2017今日头条校招——或与加
- IT江湖--这个冬天注定横尸遍野
- VS2010版本介绍(转自:http://www.cnblogs.com/Leo_wl/archive/2010/06/02/1750035.html)
- 重庆大学明月科创班课程记录1.1大一上自然与设计-仿生蝗虫设计(Solidworks)
- 橡胶支座抗压弹性模量计算公式_(完整版)橡胶支座计算
- 为什么我们需要虚数单位i?如何通俗理解欧拉公式?
- 关于access to the path is denied问题的解决