`
lvhuiqing
  • 浏览: 249711 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Java序列化之二: 从代码开始

阅读更多
1,最简单,最典型的序列化代码。
   附录1中给出的JAVA代码虽然简单,却包含了一个典型的序列化过程中的大部分要点。下面针对该序列化过程中出现的每一个元素进行一一说明。

   ① 导入Serializable
import java.io.Serializable;

   这是一个不含有任何方法声明的接口类。实现了该接口仅仅是一个标志,标志着该类可以被序列化。关于这个接口需要特别说明的是,为了能够把一个不可以被序列化的类对象(没有实现Serializable,non-serializable classes)的子类序列化,该super class的public域,protected域以及可能被访问到的package域的序列化工作由子类担任。这要求其父类中必须要包含一个没有参数的生成器。

   ② 关于serialVersionUID
private static final long serialVersionUID = 2356129180978015792L;


   故名思议,这是一个版本号码,而且应该是特定系统中的唯一值。该值用来被反序列化的时候,校验当前被反序列化的对象是不是与当前的类定义版本一致。如果不一致的话,会产生 InvalidClassException异常这样一来,很显然该值应该被定义成 private static final这就可以解释,在使用eclipse定义Serializable对象的时候(类如Servlet),为什么Eclipse会自动生成一个serialVersionUID。

   ③ 序列化的过程(serialization)
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myPerson);


   ④ 反序列化过程(deserialization)
 ObjectInputStream ois = new ObjectInputStream(fis);
 Person myPerson = (Person) ois.readObject();


   参见:附录1_最简单的序列化代码

2,实际上,如果项目需要我们也可以完全自定义一个序列化机制。如附录2所示。
   参见:附录2_自定义的序列化过程该实例展示了如果将一个对象序列化成可以阅读的xml文档的过程。
0
0
分享到:
评论

相关推荐

    java序列化和反序列化的方法

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    Protocol Buffer序列化对比Java序列化.

    - Java序列化:Java序列化可能存在安全风险,比如恶意构造的序列化数据可能导致远程代码执行。 在实际应用中,如果需要跨语言通信、追求高性能或考虑安全性,Protocol Buffer通常是更好的选择。而Java序列化则在...

    Java序列化_Java序列化结构_

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、网络传输或在不同时间点恢复。这个过程被称为序列化,而反向操作称为反序列化。序列化在许多场景下都非常有用,比如在分布式...

    java 序列化代码示例

    Java序列化是Java平台中的一种标准机制,它允许将对象的状态转换为字节流,以便存储、传输或恢复。在Java中,一个类如果要实现序列化,需要实现`Serializable`接口,这是一个标记接口,不包含任何方法。下面我们将...

    探索Java序列化与反序列化的奥秘:数据持久化的桥梁

    ### Java序列化与反序列化的深入解析 #### Java序列化的重要性及应用场景 Java序列化是一项核心功能,它允许程序员将对象的状态转化为字节流的形式,从而实现对象的持久化存储或者在网络之间进行传递。这对于诸如...

    Java序列化

    Java序列化是Java平台中的一种标准机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络进行传输或者在某些时候恢复原来的对象状态。这一过程包括两个主要步骤:对象的序列化(将对象转换为字节流)和反...

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

    json序列化与反序列化处理代码(java版本)

    极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    Java序列化Jar包

    Java序列化是Java平台中的一项重要技术,它允许对象的状态被转换为字节流,以便存储或通过网络进行传输。这种技术在分布式系统、持久化存储以及数据交换等场景中非常常见。本资源包含了三个流行的Java序列化框架:...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    java序列化之protobuf

    Java序列化是将Java对象转换为字节流的过程,以便可以在网络上传输或存储在磁盘上。这使得数据能够跨不同的系统平台进行传输和持久化。Protocol Buffers(protobuf)是Google推出的一种高效、跨平台的数据序列化协议...

    FST:快速Java序列化的替代品

    **FST:快速Java序列化的替代方案** 在Java开发中,序列化是一个常见的需求,它允许将对象的状态转换为字节流,以便于存储或网络传输。标准的Java序列化虽然方便,但在处理大量数据时,性能往往成为瓶颈。这时,FST...

    C#和Java的序列化反序列化

    在C#中,我们可以使用.NET框架提供的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类来进行二进制序列化,或者使用`System.Xml.Serialization.XmlSerializer`来进行XML序列化。而在Java中,...

    java 常用序列化和反序列化框架使用demo

    Java序列化和反序列化是将对象的状态转换为字节流和从字节流恢复对象状态的过程,这对于数据持久化、网络传输以及跨进程通信等场景至关重要。在Java中,`java.io.Serializable`接口用于标记一个类是可序列化的。然而...

    Java序列化的机制和原理

    Java序列化是Java平台提供的一种将对象转换为字节流,以便存储、在网络上传输或者在后续时间重新创建相同对象的机制。这是Java编程中一个非常重要的概念,尤其是在分布式环境和持久化存储中。让我们深入探讨一下Java...

    java反序列化利用程序UI版Beta1.1.rar

    1. **Java序列化机制**:Java对象序列化是通过实现`Serializable`接口来标记一个类可被序列化。`ObjectOutputStream`用于将对象写入流,`ObjectInputStream`用于从流中读取并反序列化对象。 2. **易受攻击的库**:...

    java序列化(Serializable)的作用和反序列化

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...

    java序列化原理与算法

    ### Java序列化原理与算法详解 #### 序言 在现代软件开发中,尤其是在网络通信和数据持久化领域,对象的序列化与反序列化扮演着至关重要的角色。Java作为一种广泛应用的编程语言,提供了强大的内置支持来实现序列化...

    java对象序列化和反序列化

    **二、Java反序列化** 1. **定义**:Java反序列化是将字节流还原为原来的Java对象的过程。它是序列化的逆操作,通常用于从磁盘、网络或缓存中恢复对象。 2. **过程**: - 使用`ObjectInputStream`的`readObject()...

Global site tag (gtag.js) - Google Analytics