JAVA編程技術(shù)基礎(chǔ):對象的串行化(Serialization)

字號:

一、串行化的概念和目的
    1.什么是串行化
    對象的壽命通常隨著生成該對象的程序的終止而終止。有時候,可能需要將對象的狀態(tài)保存下來,在需要時再將對象恢復(fù)。我們把對象的這種能記錄自己的狀態(tài)以便將來再生的能力。叫作對象的持續(xù)性(persistence)。對象通過寫出描述自己狀態(tài)的數(shù)值來記錄自己 ,這個過程叫對象的串行化(Serialization) 。串行化的主要任務(wù)是寫出對象實例變量的數(shù)值。如果交量是另一對象的引用,則引用的對象也要串行化。這個過程是遞歸的,串行化可能要涉及一個復(fù)雜樹結(jié)構(gòu)的單行化,包括原有對象、對象的對象、對象的對象的對象等等。對象所有權(quán)的層次結(jié)構(gòu)稱為圖表(graph)。
    2.串行化的目的
    Java對象的單行化的目標(biāo)是為Java的運行環(huán)境提供一組特性,如下所示:
    1) 盡量保持對象串行化的簡單扼要 ,但要提供一種途徑使其可根據(jù)開發(fā)者的要求進行擴展或定制。
    2) 串行化機制應(yīng)嚴格遵守Java的對象模型 。對象的串行化狀態(tài)中應(yīng)該存有所有的關(guān)于種類的安全特性的信息。
    3) 對象的串行化機制應(yīng)支持Java的對象持續(xù)性。
    4) 對象的串行化機制應(yīng)有足夠的 可擴展能力以支持對象的遠程方法調(diào)用(RMI)。
    5) 對象串行化應(yīng)允許對象定義自身 的格式即其自身的數(shù)據(jù)流表示形式,可外部化接口來完成這項功能。
    二、串行化方法
    從JDK1.1開始,Java語言提供了對象串行化機制 ,在java.io包中,接口Serialization用來作為實現(xiàn)對象串行化的工具 ,只有實現(xiàn)了Serialization的類的對象才可以被串行化。
    Serializable接口中沒有任何的方法。當(dāng)一個類聲明要實現(xiàn)Serializable接口時,只是表明該類參加串行化協(xié)議,而不需要實現(xiàn)任何特殊的方法。下面我們通過實例介紹如何對對象進行串行化。
    1.定義一個可串行化對象
    一個類,如果要使其對象可以被串行化,必須實現(xiàn)Serializable接口。我們定義一個類Student如下:
    public class Student implements Serializable{
    int id; //學(xué)號
    String name; //姓名
    int age; //年齡
    String department //系別
    public Student(int id,String name,int age, String depart
    ment){
    this.id=id;
    this.name=name;
    this.age=age;
    this.department=department;
    }
    }