`
wwty
  • 浏览: 542964 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

java当中的串行化与反串行化

阅读更多

1.什么是串行化

       对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫对象的串行化(Serialization-连续) 。串行化的主要任务是写出对象实例变量的数值。如果变量是另一对象的引用,则引用的对象也要串行化。这个过程是递归的,串行化可能要涉及一个复杂树结构的单行化,包括原有对象、对象的对象、对象的对象的对象等等。对象所有权的层次结构称为图表(graph)。

 

2.串行化的目的

Java对象的单行化的目标是为Java的运行环境提供一组特性,如下所示:

1) 尽量保持对象串行化的简单扼要 ,但要提供一种途径使其可根据开发者的要求进行扩展或定制。

2) 串行化机制应严格遵守Java的对象模型 。对象的串行化状态中应该存有所有的关于种类的安全特性的信息。

3) 对象的串行化机制应支持Java的对象持续性。

4) 对象的串行化机制应有足够的 可扩展能力以支持对象的远程方法调用(RMI)。

5) 对象串行化应允许对象定义自身 的格式即其自身的数据流表示形式,可外部化接口来完成这项功能。

 

3、串行化的方法

1.定义一个可串行化对象
一个类,如果要使其对象可以被串行化,必须实现Serializable接口。
2.构造对象的输入/输出流
要串行化一个对象,必须与一定的对象输出/输入流联系起来,通过对象输出流将对象状态保     存下来,再通过对象输入流将对象状态恢复。
java.io包中,提供了ObjectInputStream和 ObjectOutputStream将数据流功能扩展至可读写    对象 。在ObjectInputStream 中用readObject()方法可以直接读取一个对象,                 ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中。

 

4、串行化的注意事项

1).串行化能保存的元素
串行化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且串     行化保存的只是变量的值,对于变量的任何修饰符都不能保存。
2).transient关键字
对于某些类型的对象,其状态是瞬时的,这样的对象是无法保存其状态的。例如一个Thread对     象或一个FileInputStream对象 ,对于这些字段,我们必须用transient关键字标明,否则编     译器将报措。
另外 ,串行化可能涉及将对象存放到 磁盘上或在网络上发达数据,这时候就会产生安全问       题。因为数据位于Java运行环境之外,不在Java安全机制的控制之中。对于这些需要保密的字     段,不应保存在永久介质中 ,或者不应简单地不加处理地保存下来 ,为了保证安全性。应该在    这些字段前加上transient关键字。

分享到:
评论

相关推荐

    java对象的串行化

    在上述例子中,`department`字段被标记为`transient`,意味着在串行化和反串行化过程中,这个字段的值不会被保存或恢复。 总的来说,Java对象的串行化是一个强大的工具,它使得对象可以在多种场景下保持其状态,如...

    串行化和反串行化

    反串行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。 串行化/序列化:将java对象转换成某种格式(JVM定义的)的字节数组 串行化使用场景: 将对象用户网络间传输或者是本地化储存。 反串行...

    Java关键字Transient与串行化

    `transient`关键字是Java串行化过程中一个非常实用的功能,它可以有效地帮助开发人员保护敏感信息、优化存储空间以及提高应用程序的性能。理解其工作原理和应用场景对于任何从事Java开发工作的工程师来说都是非常...

    java 对象的xml串行化 实现网络间的类信息的传输

    使用XStream进行XML串行化和反串行化的代码如下: ```java import com.thoughtworks.xstream.XStream; // 创建XStream实例 XStream xstream = new XStream(); // 序列化 Person person = new Person(); person....

    串行化保存和读取数据示例.zip

    下面是一些关于Java串行化的重要知识点: 1. **序列化标识符**:每个可串行化的类都可以包含一个`private static final long serialVersionUID`字段,这个字段用于版本控制。当类的结构发生变化时,如果没有正确...

    什么是java序列化,如何实现java序列化?学习.pdf

    这是因为 Java 对串行化的对象进行反串行化的时候,直接从流里获取其对象数据来生成一个对象实例,而不是通过其构造函数来完成。 2. 在实现串行化的时候,需要注意父类的处理。如果父类没有实现串行化接口,则其...

    什么是java序列化,如何实现java序列化?.pdf

    Java 序列化机制 Java 序列化是将一个对象的状态写入一个 Byte 流里,并且可以从其它...这是因为 Java 对串行化的对象进行反串行化的时候,直接从流里获取其对象数据来生成一个对象实例,而不是通过其构造函数来完成。

    什么是java序列化,如何实现java序列化?借鉴.pdf

    这是因为 Java 对串行化的对象进行反串行化的时候,直接从流里获取其对象数据来生成一个对象实例,而不是通过其构造函数来完成。 示例代码: ```java import java.io.*; public class Cat implements ...

    java学生信息管理的课程设计报告

    序是一个图形界面的java文档学生信息管理系统,其界面主要采用了awt包和swing包,使用GUI图形用户界面,利用串行化,反串行化。程序实现了学生信息管理系统的基本功能有:对学生信息管理系统的录入,查询和修改,...

    KryoJava序列化和克隆框架具有快速高效自动的特点

    6. **串行化与反串行化的API**:Kryo提供了简洁易用的API,使得开发者可以轻松地将对象序列化到字节数组、输入/输出流或者文件中,并且反序列化回来。 7. **兼容性**:Kryo虽然不是Java标准的序列化机制,但它能很...

    Java.Samples

    同时,多线程技术用于处理并发的用户连接和消息传递,`java.io`用于串行化和反串行化数据。 5. **连连看游戏**:连连看游戏的实现会涉及图形界面的布局管理,以及算法设计,如深度优先搜索(DFS)或广度优先搜索...

    Java基础面试题,适合1-2年工作经验的小伙伴

    11. 串行化与反串行化:串行化将对象的状态转换为字节序列,便于存储或网络传输;反串行化反之,将字节序列恢复为对象。 12. 线程状态:线程有新建、就绪、运行、阻塞和死亡五种状态,线程间的切换取决于CPU调度和...

    java输入输出流详解.doc

    - **`Serializable`接口**: 实现该接口的对象可以通过`ObjectOutputStream`和`ObjectInputStream`进行串行化和反串行化。 - **对象串行化的作用**: - 数据持久化:将对象状态保存到文件中。 - 进程间通信:在网络...

    Java中输入输出的总括

    反之,也可以将字节流反串行化为Java对象。 ##### 4.2 对象串行化的作用 - **持久化**:可以将对象的状态保存到文件中,以便后续使用。 - **远程传递**:可以将对象作为消息在网络中传递,实现远程调用等功能。 #...

    JAVA1111111111111111

    注意,循环引用的不可串行化问题,以及使用ObjectOutputStream的writeObject()和ObjectInputStream的readObject()进行对象的串行化和反串行化。 6. **线程**:线程是程序的执行流,具有新建、就绪、运行、阻塞和...

    《java语言基础》考试题.docx

    对象串行化的反过程称为对象反串行化,即从字节序列中恢复出原始的 Java 对象。对象串行化机制对于实现持久化存储和远程通信等功能非常有用。 ### 5. Swing 的事件处理机制 Swing 是 Java 提供的一个用于构建图形...

    JAVA100例之实例87JavaBean的学习

    3. **串行化**:为了能够在不同的网络环境或持久存储中使用,JavaBean需要实现`java.io.Serializable`接口,以支持对象的串行化和反串行化。 4. **命名约定**:属性名称与getter和setter方法名称遵循驼峰命名法。...

    gson.jar包

    Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。

    Java语言程序设计

    - **反串行化**:从字节流中恢复对象状态的过程。 综上所述,全国计算机等级考试二级教程——Java语言程序设计涵盖了Java语言的基础知识、核心特性和高级应用,旨在培养考生全面掌握Java编程技能,适用于全国...

    json-jar json包

    - JSON串行化和反串行化:将Java对象转换为JSON字符串,或将JSON字符串还原为Java对象,这在持久化数据或跨应用传递数据时非常有用。 - JSON数据的遍历:通过迭代器或访问器遍历JSON数组和对象,获取所需数据。 - ...

Global site tag (gtag.js) - Google Analytics