美文网首页
浅谈JAVA的序列化与反序列化

浅谈JAVA的序列化与反序列化

作者: 七十二年蝉 | 来源:发表于2019-04-11 17:28 被阅读0次

问题1:什么是序列化与反序列化?
简单来说,序列化就是将JAVA对象转换成为二进制表示的字节数组,反序列化则是将字节序列还原为对象。

问题2:为什么要序列化?
有些场景下,我要将对象存储到数据库、磁盘或者通过网络接口发送,这时就需要将对象进行序列化。

问题3:如何实现序列化?
所有欲实现序列化的类,需要实现Serializable接口或Externalizable接口,我们可以使用ObjectOutputStream来进行对象的序列化,见代码:

Customer customer = new Customer("CICI",30);
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(new File("/user/local/path/customer.txt")) );
os.writeObject(customer);
os.close();

在上述代码中,首先实例化了一个Customer对象,之后新建ObjectOutputStream流,通过writerObject方法将customer对象写入到文件中;

问题4:如果实现反序列化?

ObjectInputStream os = new ObjectInputStream(new FileInputStream(new File("/user/local/path/customer.txt")));
Customer customer = (Customer) os.readObject();

通过上述代码,即将对象从文件中还原,实现了反序列化。

问题5:序列化有哪些规则?
1)当父类实现了Serializable接口的时候,所有的子类都能序列化
2)子类实现了Serializable接口,父类没有,父类中的属性不能被序列化(不报错,但是数据会丢失)
3)如果序列化的属性是对象,对象必须也能序列化,否则会报错
4)反序列化的时候,如果对象的属性有修改或则删减,修改的部分属性会丢失,但是不会报错
5)在反序列化的时候serialVersionUID被修改的话,会反序列化失败

相关文章

  • Java序列化与反序列化

    问题 Java序列化与反序列化是什么?为什么需要序列化与反序列化?有什么好处?如何实现Java序列化与反序列化? ...

  • 《成神之路-基础篇》Java基础知识——序列化(已完结)

    Java对象的序列化与反序列化 介绍了序列化与反序列化的基本用法 深入分析Java的序列化与反序列化 介绍了wri...

  • java专题之序列化

    一、基本概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反...

  • urldns利用链分析

    java序列化与反序列化 java 序列化与反序列化 为了更好的存放传输一些数据,往往会将一些数据进行序列化,需 ...

  • Java序列化与Hessian序列化的区别

    Java序列化与Hessian序列化的区别

  • 2022-07-12

    什么是序列化与反序列化 Java 序列化是指把 Java 对象转换为字节序列的过程。 Java 反序列化是指把字节...

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • 序列化与反序列化1

    一、什么是序列化与反系列化? 序列化是将对象转换为二进制形式的数据(如Java中的byte数组),反序列化是再将二...

  • Serializable中为什么要设置UID

    1、什么是Java序列化与反序列化 Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指...

  • Protobuf的序列化与反序列化

    Protobuf的序列化与反序列化 proto.proto文件内容 Java 实现 序列化 反序列化 GO 实现 ...

网友评论

      本文标题:浅谈JAVA的序列化与反序列化

      本文链接:https://www.haomeiwen.com/subject/hqrxwqtx.html