目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
書き込みと同様、ストリームから読み込むことは、複雑なことではありません。// Deserialize a string and date from a file. FileInputStream in = new FileInputStream("tmp"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject();まずInputStream
(この場合はFileInputStream
) がソースストリームとして必要です。次に、InputStream
から読み込むObjectInputStream
が作成されます。そして、文字列「Today」と日付オブジェクトがストリームから読み込まれます。通常、オブジェクトはreadObject
メソッドで読み込まれ、プリミティブはDataInput
のメソッドによってストリームから読み込まれます。
readObject
メソッドは、ストリームにある次のオブジェクトを直列化復元し、readObject
から他のオブジェクトへの参照を再帰的に移動して、直列化する完全なオブジェクトグラフを作成します。プリミティブデータ型は、
DataInput
インタフェースのメソッド (readInt
、readFloat
、readUTF
など) によってストリームから読み込まれます。個別のバイトと配列バイトは、InputStream
のメソッドによって読み込まれます。直列化可能フィールド以外のプリミティブデータはブロックデータレコードから読み込まれます。
ObjectInputStream
を拡張すれば、クラスに関してストリームにある情報を利用したり、直列化復元されたオブジェクトを置き換えることができます。詳細は、resolveClass
とresolveObject
メソッドの説明を参照してください。