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

字號(hào):

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