iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java对象的序列化和反序列化举例分析
  • 640
分享到

Java对象的序列化和反序列化举例分析

2023-06-19 11:06:38 640人浏览 泡泡鱼
摘要

本篇内容介绍了“Java对象的序列化和反序列化举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么是序列化与反序列化?  序列化:

本篇内容介绍了“Java对象的序列化和反序列化举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、什么是序列化与反序列化?

  序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程

  反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程

2、为什么要做序列化?

  ①、在分布式系统中,此时需要把对象在网络上传输,就得把对象数据转换为二进制形式,需要共享的数据的 JavaBean 对象,都得做序列化。

  ②、服务器钝化:如果服务器发现某些对象好久没活动了,那么服务器就会把这些内存中的对象持久化在本地磁盘文件中(Java对象转换为二进制文件);如果服务器发现某些对象需要活动时,先去内存中寻找,找不到再去磁盘文件中反序列化我们的对象数据,恢复成 Java 对象。这样能节省服务器内存。

3、Java 怎么进行序列化?

  ①、需要做序列化的对象的类,必须实现序列化接口:Java.lang.Serializable 接口(这是一个标志接口,没有任何抽象方法),Java 中大多数类都实现了该接口,比如:String,Integer

  ②、底层会判断,如果当前对象是 Serializable 的实例,才允许做序列化,Java对象 instanceof Serializable 来判断。

  ③、在 Java 中使用对象流来完成序列化和反序列化

    ObjectOutputStream:通过 writeObject()方法做序列化操作

    ObjectInputStream:通过 readObject() 方法做反序列化操作

    

 

 第一步:创建一个 JavaBean 对象

Java对象的序列化和反序列化举例分析

使用 ObjectOutputStream 对象实现序列化

Java对象的序列化和反序列化举例分析

我们打开a.txt文件,发现里面的内容乱码,注意这不需要我们来看懂,这是二进制文件,计算机能读懂就行了。

错误一:如果新建的 Person 对象没有实现 Serializable 接口,那么上面的操作会报错:

Java对象的序列化和反序列化举例分析

第三步:使用ObjectInputStream 对象实现反序列化

  反序列化的对象必须要提供该对象的字节码文件.class

Java对象的序列化和反序列化举例分析

问题1:如果某些数据不需要做序列化,比如密码,比如上面的年龄?

解决办法:在字段面前加上 transient

Java对象的序列化和反序列化举例分析

那么我们在反序列化的时候,打印出来的就是Person [name=vae, age=0],整型数据默认值为 0 

问题2:序列化版本问题,在完成序列化操作后,由于项目的升级或修改,可能我们会对序列化对象进行修改,比如增加某个字段,那么我们在进行反序列化就会报错:

Java对象的序列化和反序列化举例分析

解决办法:在 JavaBean 对象中增加一个 serialVersionUID 字段,用来固定这个版本,无论我们怎么修改,版本都是一致的,就能进行反序列化了

  1.  

    private static final long serialVersionUID = 8656128222714547171L;

    “Java对象的序列化和反序列化举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java对象的序列化和反序列化举例分析

本文链接: https://www.lsjlt.com/news/295804.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java对象的序列化和反序列化举例分析
    本篇内容介绍了“Java对象的序列化和反序列化举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么是序列化与反序列化?  序列化:...
    99+
    2023-06-19
  • Java序列化和反序列化示例分析
    这期内容当中小编将会给大家带来有关Java序列化和反序列化示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。序列化是为了把Java对象转化为字节序列(字节流)的过程。然后深拷贝是通过对流的操作来实现的...
    99+
    2023-06-26
  • Java对象的XML序列化与反序列化实例解析
    上一篇文章我们介绍了java实现的各种排序算法代码示例,本文我们看看Java对象的xml序列化与反序列化的相关内容,具体如下。XML是一种标准的数据交换规范,可以方便地用于在应用之间交换各类数据。如果能在Java对象和XML文档之间建立某种...
    99+
    2023-05-30
    java xml 序列化
  • Java之对象的序列化和反序列化
    对象的序列化和反序列化1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化。2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObject()方法 反序列化流(Object...
    99+
    2019-09-29
    Java IO流 对象 序列化 反序列化
  • Java中序列化与反序列化的示例分析
    这篇文章将为大家详细讲解有关Java中序列化与反序列化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言序列化:将对象转换为二进制序列在网络中传输或保存到磁盘反序列化:从网络或磁盘中将二进制...
    99+
    2023-06-15
  • Java IO流对象的序列化和反序列化实例详解
    Java—IO流 对象的序列化和反序列化序列化的基本操作  1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化。  2.序列化流(ObjectOutputStream),writeObject 方法用于将对象写入输出...
    99+
    2023-05-31
    java io流 序列化
  • Java对象的序列化和反序列化是什么
    这篇文章主要介绍了Java对象的序列化和反序列化是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java对象的序列化和反序列化是什么文章都会有所收获,下面我们一起来看看吧。Java 对象的序列化和反序列化是...
    99+
    2023-07-06
  • Java对象的序列化与反序列化详解
    一、序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种途径:Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中Ⅱ.  在网络上传送对...
    99+
    2023-05-31
    java 序列化 反序列化
  • 一文详解Java对象的序列化和反序列化
    目录一、什么是 Java 序列化和反序列化?二、序列化和反序列化的实现方式三、序列化和反序列化的注意事项四、序列化和反序列化的优点和缺点五、总结Java 对象的序列化和反序列化是一种...
    99+
    2023-05-16
    Java对象序列化 Java对象反序列化 Java对象序列化和反序列化
  • C#实现对象的序列化和反序列化
    什么是序列化和反序列化: 将对象及其状态保存起来,通常是保存到文件中,叫序列化。将文件还原为对象,叫反序列化。 序列化和反序列化的接口和帮助类: 接口IFormatterobject...
    99+
    2022-11-13
    C# 序列化对象 反序列化对象
  • Jil、json序列化和反序列化库的示例分析
    这篇文章主要介绍了Jil、json序列化和反序列化库的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Jil很牛,比Newtonsof...
    99+
    2022-10-19
  • Java中怎么实现对象的序列化和反序列化
    这篇文章给大家分享的是有关Java中怎么实现对象的序列化和反序列化的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。引言:序列化是将对象的状态信息转换为可以存储或传输的形式的过程,在...
    99+
    2022-10-18
  • Ezpop pop序列化链反序列化实例分析
    这篇文章主要介绍了Ezpop pop序列化链反序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ezpop pop序列化链反序列化实例分析文章都会有所收获,下面我们一起来看看吧。&...
    99+
    2023-06-30
  • Python中序列化与反序列化的示例分析
    这篇文章将为大家详细讲解有关Python中序列化与反序列化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。初识序列化与反序列化什么是序列化?通俗一点来说,序列化就是将 对象的信息 或者 数据结构的...
    99+
    2023-06-29
  • Java 中对象的序列化和反序列化有什么区别
    本篇文章给大家分享的是有关Java 中对象的序列化和反序列化有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。主要内容如下:简洁的代码实现序列化实现的基本算法两种特殊的情...
    99+
    2023-05-31
    反序列化 java 序列化
  • Java序列化和反序列化示例介绍
    以前用序列化都是一些方法需要才实现的,后来业务需求要深拷贝才去研究。参阅了别人博客得出一些总结。 序列化是为了把Java对象转化为字节序列(字节流)的过程。然后深拷贝是通过对流的操作...
    99+
    2022-11-12
  • 图文浅析Java序列化和反序列化
    序列化 序列化:将对象转换为二进制序列在网络中传输或保存到磁盘 反序列化:从网络或磁盘中将二进制序列转换为对象 注意: 对象必须实现Serializable接口 对象的所有属性都要...
    99+
    2022-11-12
  • C#对JSON与对象的序列化与反序列化
    一、利用Web服务中的JavaScriptSerializer 类 System.Web.Script.Serialization空间,位于System.Web.extensions...
    99+
    2022-11-13
  • MessagePack和System.Text.Json序列化和反序列化性能及对比分析
    本博客将测试MessagePack 和System.Text.Json 序列化和反序列化性能项目文件: Program.cs代码: using BenchmarkDotNet.Ru...
    99+
    2023-01-28
    MessagePack 和System.Text.Json 序列化和反序列化 MessagePack 和System.Text.Json 序列化和反序列化
  • java原生序列化和Kryo序列化性能实例对比分析
    简介最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:专门针对Java语言的:Kryo,FST等等跨语言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等这些序列化方式的性...
    99+
    2023-05-31
    java kryo 序列化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作