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程序可以动态加载类定义,而这 ......
关于java的集合类,以及HashMap中Set的用法!
2005-10-22 14:47:43 Sat | 阅读(547)次
package com.tiantian;
import java.util.*;
public class JAVAContainer {
public static void main(String[] args) throws Exception {
//&nbs ......
大家知道,在1991年,几乎与Linux同时,SUN发布了Java编程语言。不久,我的大学同学(比我低两年)王克宏教授(清华博士导师)与SUN合作成立了中国最早的“Java研究中心”,并且担任该中心主任。从此,我开始注意Java技术的发展动态。我家中的存书,以Java书籍最多(当然,除了数学书籍 ......
上次談過了使用iText產生PDF檔,這次換成來談談使用JExcel來產生EXCEL檔的方法。
首先,先到他的SourceForge主頁面download相關的API檔案。
http://sourceforge.net/projects/jexcelapi/
或
http://www.andykhan ......
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 ......