序列化和反序列化

本文介绍了序列化和反序列化的概念,涉及对象状态的存储与恢复,重点讲解了Serializable接口和Externalizable接口的区别,以及如何通过ObjectOutputStream和ObjectInputStream在Java中实现序列化和反序列化操作。
摘要由CSDN通过智能技术生成

序列化:

序列化就是在保存数据时,保存数据的值数据类型

序列化就是将对象的状态(对象的属性)存储到特定存储介质中的过程,也就是将对象状态转换为可保持或可传输格式的过程。将对象放到文本文件中。

序列化的核心有两个:(1)保存对象状态 (2)对象状态可存储

序列化后的对象保存的是二进制状态,实现了平台无关性。即可以将在Windows操作系统中实现序列化的一个对象,传输到UNIX操作系统的机器上,再通过反序列化后得到相同对象,而无需担心数据因平台问题显示异常。

需要让某个对象支持序列化机制,则必须让其类是可序列化的,为了让某个类是可序列的,该类必须实现如下两个接口之一:

Serializable

只要对象的类实现了该接口,就可以被序列化。

只是一个标记接口,此接口没有任何方法。用于表示一个类可以被序列化。序列化是将对象转为字节流的过程,以方便可以将对象保存到文件、传递到网络上,或在不同Java应用程序之间进行通信

Externalizable:该接口有方法需要实现,因此一般实现上面的Serializable接口

序列化实现:

ObjectOutputStream类

构造方法:
public ObjectOutputStream(OutputStream out) :创建一个写入指定 OutputStream ObjectOutputStream
使用方法:
writeObject(Object obj) : 将指定的对象写入ObjectOutputStream。

反序列化:

反序列化就是在恢复数据时,回复数据的值数据类型

反序列化则是从特定存储介质中读取数据并重新构建成对象的过程。从文本文件获取对象信息。

反序列化实现:

ObjectInputStraem类
ObjectInputStream类也是一个包装流,不能单独使用,需要结合原始的字节输入流使用。
构造方法:
public ObjectInputStream(InputStream in) : 创建一个写入指定 InputStream ObjectInputStream 对象。
使用方法:
Object readObject() : 从 ObjectInputStream 读取对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值