1 / 16
文档名称:

对象的序列化与反序列化.ppt

格式:ppt   大小:1,557KB   页数:16页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

对象的序列化与反序列化.ppt

上传人:文库新人 2022/1/21 文件大小:1.52 MB

下载得到文件列表

对象的序列化与反序列化.ppt

文档介绍

文档介绍:对象的序列化与反序列化
第1页,本讲稿共16页
本章内容
对象序列化与反序列化的基本概念
实现序列化的基本过程
Serializable和Externalizable接口
ObjectOutputSException。
(2) 在反序列化时不会调用类的任何构造方法。
第6页,本讲稿共16页
对象序列化
注意的问题:
(1) 序列化和反序列化的顺序要一致

(2) ,
第7页,本讲稿共16页
对象序列化
ObjectOutputStream只能对实现了Serializable接口的类的对象进行默认的序列化操作,这种操作仅仅为对象的非transient和非static的实例变量进行序列化。
见源文件:
注意:静态变量属于类,不属于对象。静态变量在类加载的时候初始化,将含有静态变量的对象的序列化和反序列化分开在不同的进程中,以得到正确结果。
见源文件:

第8页,本讲稿共16页
transient成员变量
transient变量不能被序列化,那么可以修饰以下类型的变量。
(1) 实例变量不代表对象的固有的内部数据,仅仅代表具有一定逻辑含义的临时数据。
………..
private String firstName;
private String lastName;
private transient String fullName;
(2) 实例变量表示一些比较敏感的信息(密码等), 出于安全方面的原因不希望被序列化。
(3) 实例变量需要按照用户自定义的方式序列化,如经过加密后再序列化。
第9页,本讲稿共16页
具有关联关系的对象之间的序列化
Class Teacher implements Serializable
{ …………
private Set<Student> stu=new HashSet<Student>();
}
当序列化Teacher对象时,系统还会序列化Teacher所关联的其他可序列化的对象(Student对象)。
A
B
C
E
D
G
H
F
第10页,本讲稿共16页
自定义序列化方式-Serializable接口
自定义序列化方式,在可序列化类中定义下面两个方法:
private void writeObject(ObjectOutputStream out) throws IOException
private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException


注意:
第11页,本讲稿共16页
自定义序列化方式-Serializable接口
自定义序列化方式常用于以下情况:
确保序列化的安全性,对敏感信息加密后再序列化,在反序列化时先解密。
见源文件:
(2)确保对象的成员变量符合正确的约束条件。
见源文件:
(3)能够优化序列化的性能
见源文件:

注意:需要按自定义方式序列化的成员变量,是否定义为 transient类型无关紧要。
第12页,本讲稿共16页
自定义序列化方式-Externalizable接口
Externalizable接口继承自Serializable接口。如果一个类实现了Externalizable接口,那么将完全由这个类控制自身的序列化行为。
public void writeExternal(ObjectOutput out)throws IOException
public v