Serializationと関連するクラス

JDK1.1から追加された Serializationの仕組みと、 それに関連するクラスについて解説します。
Serializationはオブジェクトを入出力のストリームを通じてやり取りできるように する仕組みです。オブジェクトの情報を直接ファイルに保存したり、 ネットワークを通じて送ったりすることを可能にします。
Javaのすべてのオブジェクトが Serializationの対象になるわけではありません。 ストリームに入出力できるオブジェクトは、必ず java.io の Serializable というインターフェースをインプリメントする必要があります。 ただし、このインターフェイスは実装すべきメソッドは持っていません。 単に Serializationの対象かどうかを識別する働きをします。 java.awt の Buttonなど Componentのサブクラスは Componentが Serializable をインプリメントしているので、すべて Serializationの対象となります。 プログラマが独自に定義する新しいクラスの場合は、明示的に Serializable もしくはそのサブクラスのインターフェイスをインプリメントする必要が あります。

public class Student implements Serializable {
                      :
                      :
}

オブジェクトのストリームへの入出力を提供するクラスが、 java.io の ObjectInputStream および ObjectOutputStreamクラスです。 たとえばオブジェクトをファイルに保存するためには、 次のような手順で準備を行うことになります。


File file = new File( filename );
FileOutputStream fos = new FileOutputStream( file );
ObjectOutputStream oos = new ObjectOutputStream( fos );
                      :
oos.writeObject( object );
                      :

Serializationを通じて入出力するオブジェクトの個数や、クラスは全く任意に 指定できます。唯一の制限は Serializableであるということのみです。 またファイルに保存された場合、その情報をテキストの情報として見たり、 通常のテキストエディタで編集することはできません。 そうした処理が必要な場合は、 専用のクラスを別に用意しなければなりません。

サンプルプログラムのソース