JAVA系列之对象的序列化与反序列化
本文来自:http://www.javaeye.com/topic/130025 1 简介<o:p></o:p> 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。<o:p></o:p> 序列化一般用于以下场景:<o:p></o:p> 1. 永久性保存对象,保存对象的字节序列到本地文件中;<o:p></o:p> 2. 通过序列化对象在网络中传递对象;<o:p></o:p> 3. 通过序列化在进程间传递对象。<o:p></o:p> 对象所属的类必须实现Serializable或是Externalizable接口才能被序列化。对实现了Serializable接口的类,其序列化与反序列化采用默认的序列化方式,Externalizable接口是继承了Serializable接口的接口,是对Serializable的扩展,实现了Externalizable接口的类完全自己控制序列化与反序列化行为。<o:p></o:p> Java.io.ObjectOutputStream代表对象输出流,其方法writeObject(Object obj)可以实现对象的序列化,将得到的字节序列写到目标输出流中。Java.io.ObjectInputStream代表对象输入流,其readObject()方法能从源输入流中读取字节序列,将其反序列化为对象,并将其返回。<o:p></o:p> <o:p> </o:p> 2 序列化的几种方式<o:p></o:p> 假设定义了一个Customer类,根据Customer实现序列化方式的不同,可能有以下几种序列化方式:<o:p></o:p> 2.1 实现Serializable,未定义readObject和writeObject方法<o:p></o:p> Ø ObjectOutputStream使用JDK默认方式对Customer对象的非transient的实例变量进行序列化;<o:p></o:p> Ø ObjectInputStream使用JDK默认方式对Customer对象的非transient的实例变量进行反序列化。<o:p></o:p> <o:p> </o:p> 2.2 实现Serializable,并定义了readObject和writeObject方法<o:p></o:p> Ø ObjectOutputStream调用Customer类的writeObject(ObjectOutputStream out)方法对Customer对象的非transient的实例变量进行序列化;<o:p></o:p> Ø ObjectInputStream调用Customer类的readObject(ObjectInputStream in)方法对Customer对象的非transient的实例变量进行反序列化。<o:p></o:p> 2.3 实现Externalizable,定义readExternal和writeExternal方法<o:p></o:p&g
相关文档:
ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用。
要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就是用来加载Class文件到JVM,以供程序使用的。我们知道,java程序可以动态加载类定义,而这 ......
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an in ......
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRo ......
Java编程那些事儿1——序言
Java编程那些事儿2——程序设计是什么?
Java编程那些事儿3——你适合学习程序设计吗?
Java编程那些事儿4——如何学好程序设计?
Java编程那些事儿5——程序设计介绍小结
Java编程那些事儿6——计算机软件基本概念
Java编 ......