Java序列化和反序列化相关应用技术及实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5、在什么应用场合下考虑采用对象序列化的技术 (1)该类的对象是否需要跨应用程序域发送? (2)该类是否将与远程处理一起使用? (3)是否需要在另一种环境中实现对象的再生? (4)是否需要对对象的状态加以延续—-对象的持久化 6、序列化的主要技术特点 (1)如果某个类能够被序列化,其子类也可以被序列化。 (2)声明为static和transient类型的成员数据不能被序列 化 因为static代表类的状态,transient代表对象的临时数据。
(3)对象保存的代码示例
构造需要保存的对象实例
保存对象实例到文件中, 从而实现序列化
9、实现反序列化过程的各个API (1)ObjectInput接口 它继承DataInput接口并且支持对象的序列化 其内的readObject()方法实现读取一个对象。
(2)ObjectInputStream类 它继承InputStream类并且实现ObjectInput接口。 利用该类来实现将对象存储(调用ObjectInput接口中 的readObject()方法)。
(3)为什么要提供序列化 由于对象的寿命常随着生成该对象的程序的终止而终 止。 有时候可能需要将对象的状态保存下来,在需要时再 将对象恢复(精确的副本)以延续其状态; 也可能需要将对象从一个应用程序域发送到另一个应 用程序域中。
2、序列化的形式 (1)二进制序列化保持类型保真度 这对于在应用程序的不同调用之间保留对象的状态很 有用。 例如,通过将对象序列化到剪贴板,可在不同的应用 程序之间共享对象;也可以将对象序列化到流、磁盘、 内存和网络等等
流化后的对象传输于网络之间; 要想将对象传输于网络必须进行流化)!在对对象流进行读 写操作时会引发一些问题,而序列化机制正是用来解决这些 问题的
(2)序列化:序列化就是一种用来处理对象流的机制
将一个对象的状态(各个属性量)保存起来,然后在适当
的时候再获得并对其进行恢复的过程; 其目的是为了实现对象的传输,同时也解决了对象引用的 问题。
Java序列化和反序列化 相关应用技术及实例
对象的序列化和反序列化技术
在本讲中您能了解如下知识点 对象的序列化技术 对象的反序列化技术 序列化的主要技术特点 相关的API 类与接口 对象的序列化应用实例
1、对象的序列化技术 (1)对象流:所谓的对象流也就是将对象的内容进行流化
可以对流化后的对象(如文件IO流)进行读写操作,也可将
(3)编程要求 在Java平台中只有实现Serializable接口的类对象才 可以被序列化(因此Serializable接口属于支持序列 化的一个接口)。 Serializable接口没有定义任何成员,它只用来说明 某个类可以被序列化。
4、主要的应用 (1)在RMI、Socket、JMS、EJB等网络分布式的编程技术 应用方面都要使用该技术
注意: 也可以利用ObjectInputStream类的对象读取其它基 本类型的数据值,出错时将抛出IOException异常。
(3)读对象的代码示例
从文件中读取所保存的对 象,从而实现反序列化
10、对象序列化的应用实例 (1)用途 利用对象的序列化实现保存应用程序的当前工作状态, 下次再启动的时候将自动地恢复到上次执行的状态。 由于序列化本身就是允许一个对象在虚拟机之间传送 (或者经过一段空间,如在RMI中;或者经过一段时间, 比如数据流被保存到一个文件中)。
(2)XML 序列化仅序列化公共属性和方法而不转换私有成 员变量,且不保留类型保真度 当希望提供或使用数据而不限制使用该数据的应用程 序时,这很有用 由于 XML 是一个开放式标准,因此在WeHale Waihona Puke BaiduService技术 中的SOAP协议则是该应用 3、序列化分为两大部分:序列化和反序列化 (1)序列化 就是将数据分解成字节流(包括对象类型和版本等头 信息),以便存储在文件中或在网络上传输。 (2)反序列化 就是打开字节流并重构对象(JVM用头信息生成对象 实例,然后将对象字节流中的数据复制到对象数据成员 中)。
(2)实例WriteVectorObj.Java
(3)ReadVectorObj.java
本讲的简要回顾
1、子曰:“学而不思则罔,思而不学则殆。” “学而时习之”
2、子曰:“知之者不如好之者,好之者不如乐之者”
3、子曰:“三人行,必有我师焉”
4、子曰:“我非生而知之者,好古,敏以求之者也”
5、师者:“传道、授业和解惑”
因为它自动屏蔽了操作系统的差异,字节顺序等问题(比 如,在Window平台生成一个对象并序列化后,然后通过网络 传到一台Unix机器上,最后可以在这台Unix机器上正确地重 构出原来的对象)
(2)不同平台的程序之间相互通讯方面的应用 因为可以用java.io包中的各种字节流类将其保存到 文件中,管道到另一线程中或通过网络连接将对象数据 发送到另一主机
(2)ObjectOutputStream类 它继承OutputStream类并且实现ObjectOutput接口。 利用该类来实现将对象存储(调用ObjectOutput接口 中的writeObject()方法)。
注意: 也可以利用ObjectOutputStream类的对象写入其它基 本类型的数据值。 出错时将抛出IOException异常。
7、处理对象流的Java API (1)序列化实现过程 利用ObjectOutput接口和ObjectOutputStream类 (2)反序列化实现过程 利用ObjectInput接口和ObjectInputStream类
8、实现序列化过程的API (1)ObjectOutput接口 它继承DataOutput接口并且支持对象的序列化 其内的writeObject()方法实现存储一个对象。
相关文档
最新文档