Java序列化深入解析 港控/mmm° 2022-05-28 02:19 211阅读 0赞 最近经常用到序列化,但是对于Java序列化没有一个系统的理解,查找了很多资料,做了个总结。 1、什么是序列化 序列化可以将一个java对象以二进制流的方式在网络中传输并且可以被持久化到数据库、文件系统中,反序列化则是可以把之前持久化在数据库或文件系统中的二进制数据以流的方式读取出来重新构造成一个和之前相同内容的java对象。 2、序列化作用 第一种:用于将java对象状态储存起来,通常放到一个文件中,使下次需要用到的时候再读取到它之前的状态信息。 第二种:可以让java对象在网络中传输。 3、序列化实现 1)、需要序列化的类需要实现Serializable接口,该接口没有任何方法,只是标示该类对象可被序列化。 2)、序列化过程:使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态) 3)、反序列化过程:使用一个输入流(如:FileInputStream)来构造一个ObjectInputStream(对象流)对象,接着,使用ObjectInputStream对象的readObject(Object obj)方法就可以将参数为obj的对象读出(即获取其状态) 4、静态long类型常量serialVersionUID的作用 如果没有设置这个值,你在序列化一个对象之后,改动了该类的字段或者方法名之类的,那如果你再反序列化想取出之前的那个对象时就可能会抛出异常,因为你改动了类中间的信息,serialVersionUID是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,当修改后的类去反序列化的时候发现该类的serialVersionUID值和之前保存在文件中的serialVersionUID值不一致,所以就会抛出异常。 而显示的设置serialVersionUID值就可以保证版本的兼容性,如果你在类中写上了这个值,就算类变动了,它反序列化的时候也能和文件中的原值匹配上。而新增的值则会设置成null,删除的值则不会显示。 5、序列化特点 1)、如果一个类可被序列化,其子类也可以,如果该类有父类,则根据父类是否实现Serializable接口,实现了则父类对象字段可以序列化,没实现,则父类对象字段不能被序列化。 2)、声明为transient类型的成员数据不能被序列化。transient代表对象的临时数据; 3)、当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
相关 Java中对象序列化与反序列化案例解析 在Java中,对象的序列化和反序列化是非常重要的数据持久化手段。下面是一个简单案例的解析: 1. **对象序列化:**假设我们有一个Student类: ```java pu ゝ一世哀愁。/ 2024年09月12日 21:54/ 0 赞/ 11 阅读
相关 Java序列化与反序列化问题解析 在Java编程中,序列化和反序列化是两个重要的概念,主要用于对象的持久化存储和恢复。 1. 序列化: - 编写序列化代码:使用`ObjectOutputStream`将 灰太狼/ 2024年09月10日 02:27/ 0 赞/ 12 阅读
相关 Serializable序列化深度解析 前言 相信大家日常开发中,经常看到Java对象“implements Serializable”。那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~ ゝ一纸荒年。/ 2023年01月01日 01:54/ 0 赞/ 169 阅读
相关 深入分析java序列化 概念 先来点简单的概念: what?why? 什么是序列化?为什么要序列化? 答曰:将java对象转成字节序列,用以传输和保存 where? 使用场景 浅浅的花香味﹌/ 2022年08月03日 00:47/ 0 赞/ 177 阅读
相关 深入了解java序列化 在日常开发中,前端与后端的交互,系统之间的远程调用都需要使用到序列化技术,在java中使用序列化非常简单,只需要将被序列化的对象的类实现Java.io.Serializable 旧城等待,/ 2022年06月12日 05:11/ 0 赞/ 161 阅读
相关 Java序列化深入解析 最近经常用到序列化,但是对于Java序列化没有一个系统的理解,查找了很多资料,做了个总结。 1、什么是序列化 序列化可以将一个java对象以二进制流的方式在网络中传输并 港控/mmm°/ 2022年05月28日 02:19/ 0 赞/ 212 阅读
相关 深入理解JAVA序列化 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识, Myth丶恋晨/ 2022年04月10日 20:30/ 0 赞/ 204 阅读
相关 深入理解JAVA序列化 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认 我会带着你远行/ 2022年03月27日 05:16/ 0 赞/ 190 阅读
相关 深入学习Java序列化 前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题, àì夳堔傛蜴生んèń/ 2022年01月19日 01:43/ 0 赞/ 195 阅读
还没有评论,来说两句吧...