对象的序列化与反序列化

对象的序列化与反序列化

ID:41282907

大小:226.51 KB

页数:41页

时间:2019-08-21

对象的序列化与反序列化_第1页
对象的序列化与反序列化_第2页
对象的序列化与反序列化_第3页
对象的序列化与反序列化_第4页
对象的序列化与反序列化_第5页
资源描述:

《对象的序列化与反序列化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、对象的序列化与反序列化主要内容概述当两个进程进行远程通信时,彼此可以发送各种类型的数据,包括文本图片音频视频等,都会以二进制序列的形式在网络上传送.当两个java进程进行通信时,一个进程能否把一个java对象发送给另一个进程呢?答案是肯定的!概述如何才能做到呢1)发送方需要把这个java对象转换为字节序列,才能在网上传送2)接收方需要把字节序列再恢复为java对象.把java对象转换为字节序列的过程称为对象的序列化,.把字节序列恢复为java对象的过程称为对象的反序列化.序列化与反序列化对象序列化两种用途把对象的字节序列永久的保存到硬盘上,通常存放在一个文

2、件中.在网络上传送对象的字节序列.主机1主机2文件网络传输存储到文件9.1.jdk类库中的序列化API如何才能做到呢1)发送方需要把这个java对象转换为字节序列,才能在网上传送2)接收方需要把字节序列再恢复为java对象.把java对象转换为字节序列的过程称为对象的序列化,.把字节序列恢复为java对象的过程称为对象的反序列化.序列化与反序列化9.1jdk类库中的序列化APIjava.io.ObjectOutputStream:代表对象输出流它的writeObject(Objectobj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出

3、流中。Java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节,再把它们反序列化成一个对象,并将其返回。9.1jdk类库中的序列化API哪些类可以被序列化呢?只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则ObjectOutputStream的writeObject(Objectobj)方法会抛出IOException。实现了Serializable或Externalizable接口的类也称为可序列化类。Externalizable接口继承Seria

4、lizable接口,实现Externalizable接口的类完全由自身来控制序列化的行为。而仅实现Serializable接口的类可以采用默认的序列化方式。Jdk的部分类如StringDate等都实现了Serializable接口9.1jdk类库中的序列化API假定一个Customer类,它的对象需要序列化。可以有以下三种方式进行如果customer类仅仅实现了Serializable接口的类,那么会按照以下方式进行序列化和反序列化:ObjectOutputStream采用默认的序列化方式,对Customer对象的非transient的实例变量进行序列化。Ob

5、jectInputStream采用默认的反序列化方式,对customer对象的非transient的实例变量进行反序列化。9.1jdk类库中的序列化API2.如果customer类仅仅实现了Serializable接口,并且还定义了readObject(ObjectInputStreamin)和writeObject(ObjectOutputStreamout),那么会按照以下方式进行序列化和反序列化:ObjectOutputStream会调用Customer对象的writeObject(ObjectOutputStreamout)方法进行序列化。ObjectI

6、nputStream会调用Customer对象的readObject(ObjectInputStreamin)方法进行反序列化。9.1jdk类库中的序列化API3.如果customer类实现了Externalizable接口,那么Customer类必须实现readExternal(ObjectInputin)和writeExternal(ObjectOutputout)方法,那么会按照以下方式进行序列化和反序列化:ObjectOutputStream会调用Customer对象的writeExternal(ObjectOutputout)方法进行序列化。Objec

7、tInputStream会调用Customer对象的readExternal(ObjectInputin)方法进行反序列化。9.1jdk类库中的序列化API类框图9.1jdk类库中的序列化步骤创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流:ObjectOutputStreamout=newObjectOutputStream(newfileOutputStream(“D:\objectfile.obj”));9.1jdk类库中的序列化步骤通过对象输出流的writeObject()方法写对象,如:Out.writeObject(“hello

8、”);Out.write

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。