Serializable简单介绍

2023-11-18

Serializable(序列化)

  1. 什么是序列化

    序列化是将对象状态转化为可保持或者传输的格式过程,与序列化相反的是反序列化,完成序列化和反序列化,可以存储或传输数据

    一般情况下,在定义实体类时会使用Serializable

  2. 为什么要序列化对象

    对象—>字节:对象的序列化

    字节—>对象:对象的反序列化

    编程语言底层涉及的IO操作需要操作系统的完成,底层IO操作都是字节流,所以写操作涉及将编程语言数据类型转换为字节流(序列化),而读操作又涉及到将字节流转换为编程语言数据类型(反序列化)

  3. 什么时候需要序列化

    需要把对象的状态信息通过网络传输,或者需要将对象的状态信息持久化

  4. 为什么是空接口

    Serializable用于通知jvm将本对象进行序列化,所有的操作是jvm进行,Serializable只表示一个可序列化的语义

  5. serialVersionUID

    用来标识继承serializable的类的版本,以验证加载的类和序列化的对象是否兼容,不同的类具有不同的serialVersionUID

    如果我们未提供serialVersionUID,jvm会自动生成一个,但是不推荐这样做,容易报InvalidClassException

  6. 定义serialVersionUID

    当自定义serialVersionUID后,后续在类中添加属性,对文件进行反序列化时,会在新添加的属性处赋值null

  7. 未定义serialVersionUID

    若未定义serialVersionUID,jvm将根据类本身的某些属性(例如,类名,实例字段等)定义一个,后续在类中添加属性,对文件进行反序列化时,会因为serialVersionUID不同而报InvalidClassException

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Serializable简单介绍 的相关文章

随机推荐

  • 进程、线程、管程、纤程、协程概念以及区别

    进程 进程是指在操作系统中能独立运行并作为资源分配的基本单位 由一组机器指令 数据和堆栈等组成的能独立运行的活动实体 进程在运行是需要一定的资源 如CPU 存储空间和I O设备等 进程是资源分配的基本单位 进程的调度涉及到的内容比较多 存储
  • WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connec

    python安装包错误 网络原因 直接改用阿里云镜像 然后再安装 pip config set global index url https mirrors aliyun com pypi simple 这就修改成功 接下来正常执行安装命令
  • docker 编辑容器内文件

    docker 编辑容器内文件 近期在学习docker 为编辑容器中文件 可以使用以下几种方法 特此记录 方法1 在容器中修改 使用vi命令编辑文件 注 如果vi命令没有 可以使用yum y install vim或者apt get inst
  • js-table2excel

    eslint disable let idTmr const getExplorer gt let explorer window navigator userAgent ie if explorer indexOf MSIE gt 0 r
  • 流程图中的实线_XMind如何在流程图中绘制实线箭头?XMind使用技巧

    如何利用xmind制作自己的思维导图 你好 建议你可以这样试试看 打开画图工具点击上方栏目 思维导图 在跳转专的页面点击 立即属体验 进入在线绘制界面 在画布的四周有很多的工具栏 这些在绘制的过程中都是可以使用的 首先 将中心主题进行确立
  • Java中StringBuffer类常用方法介绍

    StringBuffer类的介绍 StringBuffer是字符串缓存区 当new的时候是在堆内存创建了一个对象 底层是一个长度为16的 字符数组当调用添加的方法时 不会再重新创建对象 在不断向原缓冲区添加字符 查看字符串缓存区容量和长度
  • 快速傅氏变换之旅(一) 概念简介 3

    1 蝶形变换 普通的FFT算法称为基2的FFT算法 这种算法的核心是蝶形变换 长度为n 2 k1的变换共需要做 k1 n 2 次蝶形变换 如上图所示 若需变换数据表示为一个复数数组c 则每次蝶形变换有2个输入 c i c i s 两个输出
  • JS解密日记

    前言 JS混淆是通过改变JS代码的语法结构来使代码难以阅读和理解的技术 然而 请注意 混淆并不能真正保护您的代码 因为它仍然可以被解密和恢复其原始形式 直接上源代码 eval function p a c k e r e function
  • C11:mutex和lock_guard的使用.

    在C 11中 引入了有关线程的一系列库 且都在std命名空间内 下面演示一个使用线程的例子 非常的简单 引入了thread和mutex头文件 include
  • 攻防世界 inget

    打开网页提示 Please enter ID and Try to bypass 输入id绕过 尝试一下万能钥匙 尝试要不要符号闭合 http 61 147 171 105 49280 id 1 or 1 1 加个单引号成功 http 61
  • 【菜鸟C++学习杂记】ASCII码转换和显示

    笔者今年刚考上华东某高校的计算机研究生 本科虽是计算机学院 但期间主攻C 和Unity游戏开发 研究生属于小跨到计算机科学与技术 目前在进行硕导给的假期期间学习C 的任务 此类杂记主要记录下编码过程遇到的一些有趣的小知识 在某网课遇到了一个
  • 运用PL/SQL从1~100(包含边界)偶数之和

    1 第一种 方式实现 代码 set serveroutput on declare number integer 0 i integer 0 begin while i lt 100 loop number number i i i 2 e
  • 巴比特

    摘要 据 科创板日报 报道 当地时间5月9日 Meta宣布开源了一种可以横跨6种不同模态的全新AI模型ImageBind 包括视觉 图像和视频形式 温度 红外图像 文本 音频 深度信息 运动读数 由惯性测量单元或IMU产生 ImageBin
  • 为什么需要进程间通信??

    进程是一个独立的资源分配单元 不同进程 这里所说的进程通常指的是用户进程 之间的资源是独立的 没有关联 不能在一个进程中直接访问另一个进程的资源 例如打开的文件描述符 但是 进程不是孤立的 不同的进程需要进行信息的交互和状态的传递等 因此需
  • 微信公众号支付H5调用支付详解

    原文地址 http blog csdn net fengshizty article details 45564685 微信公众号支付 最近项目需要微信支付 然后看了下微信公众号支付 虽然不难 但是细节还是需要注意的 用了大半天时间写了个d
  • [Java]JAVA获取实体与List 数组的转换

    public class BeanToArray private String beanNames private Object values public BeanToArray public BeanToArray String bea
  • vs添加第三方库详解

    vs添加第三方库详解 一 编写库所生成的文件 核心文件 二 两种使用库的方式 此时添加一个Pro工程调用这个库 三 库导出函数时候的细节情况 四 新建工程使用这个库 以前总是不知道怎么使用第三方库 每次想学习一个库进行开发 总是遇到各种各样
  • Java中关于System.out.println/print的运算规则

    一 输出到控制台 System out println msg 输出一个字符串 带换行 n System out print msg 输出一个字符串 不带换行 n System out printf format msg 格式化输出 注 p
  • SpringMVC的请求(参数绑定注解、Restful风格的参数的获取、自定义类型转换器、获得Servlet相关API)

    SpringMVC的请求 获得请求参数 SpringMVC的请求 获得请求参数 SpringMVC的请求 获得请求参数 1 SpringMVC的请求 获得请求参数 配置全局乱码过滤器 2 SpringMVC的请求 获得请求参数 参数绑定注解
  • Serializable简单介绍

    Serializable 序列化 什么是序列化 序列化是将对象状态转化为可保持或者传输的格式过程 与序列化相反的是反序列化 完成序列化和反序列化 可以存储或传输数据 一般情况下 在定义实体类时会使用Serializable 为什么要序列化对