欢迎来到天天文库
浏览记录
ID:52308095
大小:226.51 KB
页数:41页
时间:2020-04-04
《对象的序列化与反序列化.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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:代表对象输出流它的writ
3、eObject(Objectobj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。Java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节,再把它们反序列化成一个对象,并将其返回。9.1jdk类库中的序列化API哪些类可以被序列化呢?只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则ObjectOutputStream的writeObject(Objectobj)方法
4、会抛出IOException。实现了Serializable或Externalizable接口的类也称为可序列化类。Externalizable接口继承Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为。而仅实现Serializable接口的类可以采用默认的序列化方式。Jdk的部分类如StringDate等都实现了Serializable接口9.1jdk类库中的序列化API假定一个Customer类,它的对象需要序列化。可以有以下三种方式进行如果custome
5、r类仅仅实现了Serializable接口的类,那么会按照以下方式进行序列化和反序列化:ObjectOutputStream采用默认的序列化方式,对Customer对象的非transient的实例变量进行序列化。ObjectInputStream采用默认的反序列化方式,对customer对象的非transient的实例变量进行反序列化。9.1jdk类库中的序列化API2.如果customer类仅仅实现了Serializable接口,并且还定义了readObject(ObjectInputStreamin)和w
6、riteObject(ObjectOutputStreamout),那么会按照以下方式进行序列化和反序列化:ObjectOutputStream会调用Customer对象的writeObject(ObjectOutputStreamout)方法进行序列化。ObjectInputStream会调用Customer对象的readObject(ObjectInputStreamin)方法进行反序列化。9.1jdk类库中的序列化API3.如果customer类实现了Externalizable接口,那么Custome
7、r类必须实现readExternal(ObjectInputin)和writeExternal(ObjectOutputout)方法,那么会按照以下方式进行序列化和反序列化:ObjectOutputStream会调用Customer对象的writeExternal(ObjectOutputout)方法进行序列化。ObjectInputStream会调用Customer对象的readExternal(ObjectInputin)方法进行反序列化。9.1jdk类库中的序列化API类框图9.1jdk类库中的序列化步
8、骤创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流:ObjectOutputStreamout=newObjectOutputStream(newfileOutputStream(“D:\objectfile.obj”));9.1jdk类库中的序列化步骤通过对象输出流的writeObject()方法写对象,如:Out.writeObject(“hello”);Out.write
此文档下载收益归作者所有