为什么对象序列化要定义serialVersionUID
2024-09-02 02:51:52
对于实现了java.io.Serializable接口的实体类来说,往往都会手动声明serialVersionUID,因为只要你实现了序列化,java自己就会默认给实体类加上一个serialVersionUID。
java默认添加的serialVersionUID是会根据实体类的成员(成员变量,成员方法)变化而变化的。
为什么要显示声明一个serialVersionUID呢?
当我们把实体类序列化到本地后,如果实体类的成员发生了变化,默认添加的serialVersionUID就会发生变化。此时硬盘上序列化对象的serialVersionUID与实体类中的serialVersionUID对不上,就会反序列化失败爆出异常:
Exception in thread “main” java.io.InvalidClassException: Person; local class incompatible: stream classdesc serialVersionUID = 8383901821872620925, local class serialVersionUID = -763618247875550322
所以,通常对于实现了SerialVersionUID接口的实体类来说,都会手动声明serialVersionUID。
private static final long serialVersionUID = 1L;
通过上述代码即可实现。
最新文章
- bzoj3743: [Coci2015]Kamp
- Linux:安装OpenSSH-Server E:Package openssh-server has no installation candidate
- onNewIntent调用时机
- 20 Free Open Source Web Media Player Apps
- page-object使用(1)
- 2015第35周五JavaScript变量
- mini2440裸机试炼之——DMA直接存取 实现Uart(串口)通信
- Apache与Tomcat区别联系
- oracle expdp导出远程数据到本地
- POJ 3463 最(次)短路条数
- 从壹开始微服务 [ DDD ] 之十二 ║ 核心篇【下】:事件驱动EDA 详解
- Python方法和属性的动态绑定 --面向对象
- codeforces509B
- 写的一个ORACLE存储过程小练习
- Vision GUI programming products
- html A标签 绑定点击事件。跳转页面。处理
- python 标准输入输出sys.stdout. sys.stdin
- tcpdump一个命令的剖析
- [WEB面试题] web前端面试题JavaScript第一弹,个人整理部分面试题汇总
- 【原创】Spring 注入方式
热门文章
- SSAS(SQL Server 分析服务)、***S(SQL Server报表服务)、SSIS(SQL Server集成服务)
- python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数
- STM32L0 HAL库 IO读写功能
- height()、innerHeight()、outerHeight()函数的区别详解
- python核心编程3-13
- Demo Nec
- RabbitMQ之Exchange
- MATLAB卷积运算(conv、conv2)解释
- JS高阶函数的理解(函数作为参数传递)
- cocos2d-x3.0rc打包apk遇到的一些问题记录