当前位置: 首页 > news >正文

Java对象序列化与serialVersionUID

一、 对象序列化的目的与必要性

​定义:序列化是将内存中复杂的对象结构(包含多个字段和引用)转换成一种连续的、标准的字节数据流的过程。
​与 int 的区别:int是简单、标准的数据,其二进制形式本身就是它的存储格式(所以不需要序列化操作确保)
​对象是复杂的结构,在内存中可能分散,并包含内存地址(引用)。
​序列化就是将这种分散的、带有地址信息的结构“扁平化”,去除地址依赖,使其可传输/存储。

总结:为了兼容,便于重新加载传递对象数据再调用本地类当中的方法(比如两个类一样serialVersionUID)

二、 SerialVersionUID 的机制与作用

​##核心作用:SerialVersionUID是用于标识类结构版本的唯一ID,它确保序列化端和反序列化端的类结构是兼容的
​工作流程: 序列化时: SerialVersionUID被写入数据流。
反序列化时: 读取数据流中的 ID,并与本地类的 ID 进行比较。
​关键比较对象: 它比较的是类结构的版本,而不是Java JDK 的版本。JDK 版本通常有良好的兼容性,而类结构的变化才是序列化失败的关键因素。
ps:不指定会按哈希计算生成
指定需要人为确定类能否兼容

​自动生成(默认): 如果不手动定义,JVM 会根据类名、字段、方法签名等信息自动计算一个哈希值。对类进行任何微小改动都会使这个 ID 发生变化。

private static final long serialVersionUID = 1L;

修改时机:当进行重大、不兼容的结构修改时(如重命名或者删除字段),应手动递增 ID,避免数据错乱(消除兼容性

三 Serializable接口

如果父类实现了 Serializable 接口:
所有子类自动实现序列化。
父类的所有字段都会被序列化。

要求覆写两个方法

private void writeObject(ObjectOutputStream out)
private void readObject(ObjectInputStream in)

要求有一个空参数的构造函数

当 Java 虚拟机(JVM)反序列化(即调用 readExternal() 方法来重建对象)一个实现了 Externalizable 的对象时,它首先需要一个对象的实例来调用 readExternal() 方法
如果还要实例化对应的对象,再写一个让它重载即可

public Person(){}
public Person(String name, int age){this.name=name;this.age=age;
}
http://www.jsqmd.com/news/89517/

相关文章:

  • 东莞奶茶原料批发市场推荐——圣旺水吧(东莞总公司)排名第一 - 老百姓的口碑
  • 【图像重建】基于粒子图像速度测量PIV压力场重建附Matlab代码和报告
  • 深入解析JDBC:Java数据库操作的基础
  • 暖通净化空调恒温恒湿项目:PLC 与触摸屏上位机程序探秘
  • AI Ping:开发者的大模型“智能路由器”,免费编程模型薅羊毛完全指南
  • 实战指南:企业如何构建GEO与SEO融合的全新营销体系
  • forEach跳出循环
  • 2025北京托福机构深度测评:这3家高性价比机构助你高效冲分 - 品牌测评鉴赏家
  • 分布式锁简介
  • 【单片机毕业设计】【mcugc-mcu918】基于单片机的脉搏检测仪系统
  • 重构 Flutter 网络层:从 Dio 裸奔到分层封装的企业级实践
  • 【血压估算】基于 AR 模型结合两种最小均方(LMS)方法,通过桡动脉血压信号估计主动脉血压信号附Matlab代码
  • 超实用物联网平台:功能强大,部署无忧
  • 用于编译任务的非特权 LXC 容器
  • 【单片机毕业设计】【mcugc-mcu919】基于单片机的智能远程浇花系统
  • 第30章 Shell 正则表达式实战:精准匹配字符串、日志与配置项
  • PTA大作业总结Blog2
  • MouseTester:如何用专业工具精准测试鼠标性能
  • 【无人艇编队】基于数据驱动神经预测器 分布式通信网络 制导向量场GVF5艘欠驱动自主水面船舶USV的分布式路径跟踪与编队控制Matlab仿真,确保多USV在复杂轨迹保持预设编队,更贴近实际水面航行场景
  • 41_Spring AI 干货笔记之 OpenAI SDK 嵌入(官方支持)
  • 不可多得的一次通过的文章-医疗设备采购管理系统的设计与实现【高分通过+规范】
  • 小明购物问题(C语言数据结构)
  • ComfyUI-Manager升级终极指南:一键解决配置迁移与节点兼容性问题
  • Day30立体呈现
  • Text-guided Controllable Diffusion for Realistic Camouflage Images Generation阅读笔记
  • 深蓝词库转换:三分钟搞定全平台输入法词库同步
  • 精通 Flutter 动画开发:从基础显隐动画到自定义 Hero + 物理动画的全场景实战
  • 2025北京托福机构怎么选?这3家高分选手帮你划重点! - 品牌测评鉴赏家
  • Cursor 又偷偷更新,这个功能太实用:Visual Editor for Cursor Browser
  • openpnp - Smoothieware - LPC17xx-DFU-Bootloader - 固件调试环境搭建