Java对象序列化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ObjectOutputStream和ObjectInputStream。前者 负责将对象写入字节流,后者则负责从字节流重构 对象。 ObjectOutputStream类实现了DataOutput接口, ObjectOutputStream DataOutput writeObject()是其最重要的方法,用于对象序列化。 ObjectInputStream类与ObjectOutputStream相似, 它实现了DataInput接口。ObjectInputStream中的 方法镜像DataInputStream中读取Java基本数据类 型的公开方法。readObject()方法从字节流中反序 列化对象。每次调用readObject()方法都返回流中 下一个Object
本章小结
本章讲述了Java对象的序列化技术。使用
对象序列化后,对象实际变成了流,这样 对象就可以脱离原来的程序而独立存在。 序列化是Java高级技术如RMI和JavaBean 等的基础。读者要好好体会对象序列化的 思想。通过本章的学习,读者应能使用序 列化技术实现图形、图象等对象的存储功 能
第11章 对象序列化
2010年10月10日
教学目标
在Java中,把对象写入流中称为“序列 化”(Serialization),从流中恢复对象称 为“反序列化”。使用对象序列化的好处 是:对象被序列化后,对象实际是变成了 流,如文件流,这样对象就可以脱离原来 的程序而独立存在,也就是说,程序停止 运行后,我们仍可以恢复该对象。本章将 介绍Java序列化技术以及如何控制序列化, 通过本章的学习读者将掌握Java的序列化 机制,并能应用序列化技术保存Java对象。
必须实现java.io.Serializable接口。该接口 没有任何方法,所以我们只要在类的声明 时增加implements Serializable就可以了
控制序列化
处理对象流 定制序列化过程 完全定制序列化过程 可序列化类的不同版本的序列化兼容性
处理对象流
java.io包有两个序列化对象的类:
在Java中,实现对象的序列化,除了实现
Serialable接口外,我们还可以实现 Externalizable接口。如果一个类要完全负责自己 的序列化,则需要实现Externalizable接口而不是 Serializable接口。Externalizable接口继承自 Serializable接口,如果一个类实现了 Externalizable接口,那么将完全由这个类控制自 身的序列化行为。Externalizable接口有两个方法: writeExternal和readExternal,要序列化的对象所 在的类必须实现这两个方法。当对象被序列化时, writeExternal方法会自动被执行,所有的对象写 入操作都由该方法控制;同理,当恢复序列化的 对象时,readExternal方法会自动被执行
可序列化类的不同版本的序列化兼容性
凡是实现Serializable接口的类都有一个表
示序列化版本标识符的静态变量:
private static final long serialVersionUID;
类的serialVersionUID的默认值完全依赖于
Java编译器的实现,对于同一个类,用不 同的Java编译器编译,有可能会导致不同 的serialVersionUID,也有可能相同。为了 提高serialVersionUID的独立性和确定性, 强烈建议在一个可序列化类中显示的定义 serialVersionUID,为它赋予明确的值
序列化应用实例
程序中用到了图形用户界面的知识和事件
处理技术,我们一共创建了三个按钮和一 个图形绘制区,单击鼠标可以在图形绘制 区绘制固定大小的圆,单击Save按钮,完 成对象序列化,将我们刚画的圆的对象写 入到流中并保存到文件;Clear按钮用来清 除绘制的图形;单击Load按钮,程序将恢 复了文件流中的对象,当然这个对象其实 并非图形,而是代表图形的数据
定制序列化过程
序列化通常可以自动完成,但有时可能要
对这个过程进行控制。如果希望某个域不 被序列化,可以在它前面加上transient关键 字,同理,如果类中的某个域是静态的, 它也不会被序列化 在应用时,如果对某些成员变量都改为 transient类型,将节省空间和时间,提高序 列化的性能
完全定制序列化过程
Fra Baidu bibliotek 序列化机制
序列化分为两大部分:序列化和反序列化。
序列化是将数据分解成字节流,以便存储 在文件中或在网络上传输;反序列化就是 打开字节流并重构对象 对象的序列化主要有两种用途:
(1)把对象的字节序列永久地保存到硬盘上, 通常存放在一个文件中; (2)在网络上传送对象的字节序列
序列化的实现
要想将对象序列化,那么该对象所在的类
教学重点
序列化与反序列化 序列化对象流 Serializable接口和Externalizable接口 可序列化类的不同版本的序列化兼容性
序列化概述
问题的引出 序列化机制 序列化的实现
问题的引出
序列化是一种用来处理对象流的机制,所
谓对象流也就是将对象的内容进行流化, 流的概念这里不用多说(就是I/O),我们可 以对流化后的对象进行读写操作,也可将 流化后的对象在网络之间进行传输(注:要 想将对象传输于网络必须进行流化),在对 对象流进行读写操作时会引发一些问题, 而序列化机制正是用来解决这些问题的
本章小结
本章讲述了Java对象的序列化技术。使用
对象序列化后,对象实际变成了流,这样 对象就可以脱离原来的程序而独立存在。 序列化是Java高级技术如RMI和JavaBean 等的基础。读者要好好体会对象序列化的 思想。通过本章的学习,读者应能使用序 列化技术实现图形、图象等对象的存储功 能
第11章 对象序列化
2010年10月10日
教学目标
在Java中,把对象写入流中称为“序列 化”(Serialization),从流中恢复对象称 为“反序列化”。使用对象序列化的好处 是:对象被序列化后,对象实际是变成了 流,如文件流,这样对象就可以脱离原来 的程序而独立存在,也就是说,程序停止 运行后,我们仍可以恢复该对象。本章将 介绍Java序列化技术以及如何控制序列化, 通过本章的学习读者将掌握Java的序列化 机制,并能应用序列化技术保存Java对象。
必须实现java.io.Serializable接口。该接口 没有任何方法,所以我们只要在类的声明 时增加implements Serializable就可以了
控制序列化
处理对象流 定制序列化过程 完全定制序列化过程 可序列化类的不同版本的序列化兼容性
处理对象流
java.io包有两个序列化对象的类:
在Java中,实现对象的序列化,除了实现
Serialable接口外,我们还可以实现 Externalizable接口。如果一个类要完全负责自己 的序列化,则需要实现Externalizable接口而不是 Serializable接口。Externalizable接口继承自 Serializable接口,如果一个类实现了 Externalizable接口,那么将完全由这个类控制自 身的序列化行为。Externalizable接口有两个方法: writeExternal和readExternal,要序列化的对象所 在的类必须实现这两个方法。当对象被序列化时, writeExternal方法会自动被执行,所有的对象写 入操作都由该方法控制;同理,当恢复序列化的 对象时,readExternal方法会自动被执行
可序列化类的不同版本的序列化兼容性
凡是实现Serializable接口的类都有一个表
示序列化版本标识符的静态变量:
private static final long serialVersionUID;
类的serialVersionUID的默认值完全依赖于
Java编译器的实现,对于同一个类,用不 同的Java编译器编译,有可能会导致不同 的serialVersionUID,也有可能相同。为了 提高serialVersionUID的独立性和确定性, 强烈建议在一个可序列化类中显示的定义 serialVersionUID,为它赋予明确的值
序列化应用实例
程序中用到了图形用户界面的知识和事件
处理技术,我们一共创建了三个按钮和一 个图形绘制区,单击鼠标可以在图形绘制 区绘制固定大小的圆,单击Save按钮,完 成对象序列化,将我们刚画的圆的对象写 入到流中并保存到文件;Clear按钮用来清 除绘制的图形;单击Load按钮,程序将恢 复了文件流中的对象,当然这个对象其实 并非图形,而是代表图形的数据
定制序列化过程
序列化通常可以自动完成,但有时可能要
对这个过程进行控制。如果希望某个域不 被序列化,可以在它前面加上transient关键 字,同理,如果类中的某个域是静态的, 它也不会被序列化 在应用时,如果对某些成员变量都改为 transient类型,将节省空间和时间,提高序 列化的性能
完全定制序列化过程
Fra Baidu bibliotek 序列化机制
序列化分为两大部分:序列化和反序列化。
序列化是将数据分解成字节流,以便存储 在文件中或在网络上传输;反序列化就是 打开字节流并重构对象 对象的序列化主要有两种用途:
(1)把对象的字节序列永久地保存到硬盘上, 通常存放在一个文件中; (2)在网络上传送对象的字节序列
序列化的实现
要想将对象序列化,那么该对象所在的类
教学重点
序列化与反序列化 序列化对象流 Serializable接口和Externalizable接口 可序列化类的不同版本的序列化兼容性
序列化概述
问题的引出 序列化机制 序列化的实现
问题的引出
序列化是一种用来处理对象流的机制,所
谓对象流也就是将对象的内容进行流化, 流的概念这里不用多说(就是I/O),我们可 以对流化后的对象进行读写操作,也可将 流化后的对象在网络之间进行传输(注:要 想将对象传输于网络必须进行流化),在对 对象流进行读写操作时会引发一些问题, 而序列化机制正是用来解决这些问题的