Java序列化有什么作用

Java序列化的作用有:1、方便在远程调用时对象的解码与编码,就像new对象之间直接调用,不需要像传输对象之间像JSON转换一样转来转去;2、序列化的能力;3、对象可以自定义存储格式。

一、Java序列化的作用

1、方便在远程调用时对象的解码与编码,就像new对象之间直接调用,不需要像传输对象之间像JSON转换一样转来转去

2、序列化的能力:为了在程序中能直接以对象的形式进行保存,直接进行调用

3、对象可以自定义存储格式 

二、序列化的方式

1、Serializable 接口

一个对象想要被序列化,那么它的类就要实现此接口或者它的子接口。

这个对象的所有属性(包括private属性、包括其引用的对象)都可以被序列化和反序列化来保存、传递。

不想序列化的字段可以使用transient修饰。

由于Serializable对象完全以它存储的二进制位为基础来构造,因此并不会调用任何构造函数,因此Serializable类无需默认构造函数,但是当Serializable类的父类没有实现Serializable接口时,反序列化过程会调用父类的默认构造函数,因此该父类必需有默认构造函数,否则会抛异常。使用transient关键字阻止序列化虽然简单方便,但被它修饰的属性被完全隔离在序列化机制之外,导致了在反序列化时无法获取该属性的值,而通过在需要序列化的对象的Java类里加入writeObject()方法与readObject()方法可以控制如何序列化各属性,甚至完全不序列化某些属性或者加密序列化某些属性。

2、Externalizable 接口

它是Serializable接口的子类,用户要实现的writyeExternal()和readExternal() 方法,用来决定如何序列化和反序列化。

因为序列化和反序列化方法需要自己实现,因此可以指定序列化哪些属性,而transient在这里无效。

对Externalizable对象反序列化时,会先调用类的无参构造方法,这是有别于默认反序列方式的。如果把类的不带参数的构造方法删除,或者把该构造方法的访问权限设置为private、默认或protected级别,会抛出java.io.InvalidException: no valid constructor异常,因此Externalizable对象必须有默认构造函数,而且必需是public的。

延伸阅读

什么是序列化

序列化 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。之后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

为什么实现了java.io.Serializable接口就能序列化

Java自己提供了一种序列化机制,这种机制能将一个对象序列化成二进制形式,用于写入磁盘或输出到网络,同时将从网络或者磁盘中读取的字节数组,反序列化成对象,在程序中使用。

便是实现java.io包下的Serializable接口,使用JDK 提供的两个输入、输出流对象 ObjectInputStream 和 ObjectOutputStream便可以对java对象进行序列化和反序列化。

文章标题:Java序列化有什么作用,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37754

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月10日 下午5:11
下一篇 2023年2月10日 下午5:43

相关推荐

  • 图数据库的优点有什么

    图数据库的优点有:1、更直接、自然,易于建模;2、可以很高效的插入大量数据;3、可以很高效的查询关联数据;4、提供了针对图检索的查询语言;5、提供了专业的分析算法、工具。使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。 1、更直接、自然,易于建模 使用图(或者网)的方式来表达现实世…

    2023年1月9日
    12200
  • html与html5的区别

    html与html5的区别是:1、标准不同;2、功能不同;3、兼容性不同;4、结构不同;5、交互性不同。整体对比来看,html5相比html更具有丰富的功能和更好的用户体验。通常html5是html的升级版本,扩展了更多的功能和特性。 一、标准不同 html是超文本标记语言的标准,基于SGML,主要…

    2023年5月24日
    700
  • Springboot和Spring的区别是什么

    Springboot和Spring的区别是什么:Spring Boot提供极其快速和简化的操作,让 Spring 开发者快速上手。Spring Boot提供了 Spring 运行的默认配置。Spring Boot为通用 Spring项目提供了很多非功能性特性。 一 、Spring Boot Spri…

    2023年5月16日
    1100
  • 互联网公司推行OKR的常用OKR软件有哪些

    互联网公司推行OKR的常用OKR软件有:1、Worktile;2、PingCode Goals;3、飞书okr;4、Vision;5、Zokri。其中,Worktile 是国内最早也是最成熟的OKR工具(据说飞书OKR一定程度就是参考Worktile的OKR功能打造的)。 OKR大概在2013年传入…

    2023年2月1日
    10400
  • 软件项目管理工具的选择有哪些功能

    软件项目管理工具的选择要有以下功能:一、任务管理;二、任务自动化;三、时间追踪;四、图表和报告;五、问题跟踪和工作流程;六、社交项目管理。任务管理是一项基础功能,它会涉及到项目中的方方面面。你可以使用蓝图功能绘制出整个工作流程,通过看板查看任务,将目标设置为里程碑 一、任务管理 任务管理是一项基础功…

    2023年3月31日
    1000
  • 数据仓库和数据库区别是什么

    数据库是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据仓库是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,从数据量来说,数据仓库要比数据库更庞大的多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。 一、用途 数据库:主要用于事务处理,即OLTP(Transaction…

    2023年2月13日
    3900
  • 云硬盘优势是什么

    云硬盘相较传统硬盘有4大优势:1、弹性扩容;2、数据备份;3、高可靠性;4计费灵活节约成本。比如,弹性能力是云硬盘强于普通硬盘的关键。云盘可在可用区域内自由挂载、卸载,无需关闭或重启服务器,实现不停机热更新,保障业务平稳进行。 云硬盘的4大优势 1、弹性扩容 弹性能力是云硬盘强于普通硬盘的关键。云盘…

    2022年10月13日
    40800
  • j-link 有哪些功能

    j-link的功能:1、作为仿真器使用;2、JLinkExe 可以为芯片下载bin文件并进行单步调试;3、JFlashSPIExe 通过SPI接口读写芯片的flash并烧写flash等。作为仿真器使用是指 j-link用来接收电脑的仿真命令然后转换成MCU的JTAG控制信号。 一、j-link的功能…

    2023年1月15日
    26600
  • Java为什么使用UTF-16而不是更节省内存的UTF-8

    Java使用UTF-16而不是更节省内存的UTF-8是因为UTF-16可以做到大部分常见的文字按2个字节存储,少量不常见的字符按4个字节存储,统计和定位字符的效率比UTF-8高。而UTF-8划分的变长空间多,这方面是个不能忽视的短板。 所谓UTF-8更节省内存的说法,对广大东亚文字来说根本就是伪命题…

    2023年2月7日
    8400
  • 产品管理和项目管理有什么区别

    产品管理和项目管理的区别:产品管理利用项目管理的方法交付产品;项目管理利用产品管理的方法明确目标。产品是多次销售并创造经济效益,面对的是整个市场的用户;项目往往只有一次,只要照顾好一个用户。 首先产品管理利用项目管理的方法交付产品;项目管理利用产品管理的方法明确目标。产品是多次销售并创造经济效益,面…

    2023年2月9日
    6400

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部