目次 | 前の項目 | 次の項目 Java オブジェクト直列化仕様


6.2 ストリーム要素

基本構造では、ストリーム内でオブジェクトを表す必要があります。それぞれの属性は、クラス固有のメソッドによって書かれてから読まれるクラス、フィールド、データによって表されます。ストリームのオブジェクトの表現は、ある文法によって記述することができます。null オブジェクト、新規オブジェクト、クラス、配列、文字列、およびすでにストリームにあるオブジェクトへのバック参照に対し、特別な表現があります。ストリームに書き込まれた各オブジェクトには、このオブジェクトをバック参照するために使用するハンドルが割り当てられます。ハンドルは、0x7E0000 から始めて順次割り当てられます。ストリームがリセットされると、ハンドルは再び 0x7E0000 から始まります。

クラスオブジェクトは ObjectStreamClass オブジェクトによって表されます。

ObjectStreamClass オブジェクトは次の要素によって表されます。

文字列はそれらの UTF エンコーディングによって表されます。修正された UTF の現在の仕様と実装では、コード化された文字列の合計の長さは 65535 文字に制限されるので注意が必要です。

配列は次の要素によって表されます。

ストリームの新規オブジェクトは次の要素によって表されます。

クラスによって書き込まれたすべてのプリミティブデータは、ブロックデータレコードにバッファリングされ、ラップされます。これは、そのデータが writeObject メソッドの中でストリームに書き込まれたのか、writeObject メソッドの外から直接ストリームに書き込まれたのかには関係ありません。このデータは、対応する readObject メソッドによって読み込むか、ストリームから直接読み込むことができます。writeObject メソッドによって書き込まれたオブジェクトは、前に書き込まれたブロックデータレコードがあればそれを停止し、正規オブジェクト、null、またはバック参照のどれかのうちで、適切なものとして書き込まれます。ブロックデータレコードでは、エラーの回復によって任意指定データを破棄することができます。クラスの中から呼び出された場合には、ストリームはデータやオブジェクトを endBlockData まで破棄することができます。



目次 | 前の項目 | 次の項目
Copyright © 1997-1998 Sun Microsystems, Inc. All Rights Reserved.