JAVA教程第四講Java的例外處理和I/O流4.8

字號:

4.8 對象的串行化(Serialization)
    4.8.1 串行化的定義
     1. 什么是串行化
    對象的壽命通常隨著生成該對象的程序的終止而終止。有時候,可能需要將對象的狀態(tài)保存下來,在需要時再將對象恢復(fù)。我們把對象的這種能記錄自己的狀態(tài)以便將來再生的能力,叫做對象的持續(xù)性(persistence)。對象通過寫出描述自己狀態(tài)的數(shù)值來記錄自己,這個過程叫對象的串行化(Serialization)。
     2. 串行化的目的
    串行化的目的是為java的運行環(huán)境提供一組特性,其主要任務(wù)是寫出對象實例變量的數(shù)值。
    4.8.2 串行化方法
    在java.io包中,接口Serializable用來作為實現(xiàn)對象串行化的工具,只有實現(xiàn)了Serializable的類的對象才可以被串行化。
    1. 定義一個可串行化對象
    public class Student implements Serializable{
     int id; //學(xué)號
     String name; //姓名
     int age; //年齡
     String department //系別
     public Student(int id,String name,int age,String department){
    this.id = id;
    this.name = name;
    this.age = age;
    this.department = department;
     }
    }
    2. 構(gòu)造對象的輸入/輸出流
    要串行化一個對象,必須與一定的對象輸入/輸出流聯(lián)系起來,通過對象輸出流將對象狀態(tài)保存下來,再通過對象輸入流將對象狀態(tài)恢復(fù)。
    java.io包中,提供了ObjectInputStream和ObjectOutputStream將數(shù)據(jù)流功能擴展至可讀寫對象。在ObjectInputStream中用readObject()方法可以直接讀取一個對象,ObjectOutputStream中用writeObject()方法可以直接將對象保存到輸出流中。