| 目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
ObjectInputStream.GetFieldは、直列化可能フィールドの値を取得するための API を提供します。ストリームのプロトコルは、defaultReadObjectが使うプロトコルと同じです。readFieldsの使用による直列化可能フィールドへのアクセスでは、ストリームの形式は変更されずに、値にアクセスするための代わりの API が提供されるだけです。この API は、クラスの各名前付き直列化可能フィールドに対し、対応する非 transient および非 static フィールドを必要としません。直列化可能フィールドは、serialPersistentFieldsを使って宣言されたフィールドであるか、あるいはそのようなフィールドが宣言されていない場合は、オブジェクトの非 transient および非 static フィールドです。ストリームの読み込み時に利用できる直列化可能フィールドは、オブジェクトの直列化時にストリームに書き込まれたフィールドです。ストリームを書き込むクラスのバージョンが異なる場合は、すべてのフィールドが現在のクラスの直列化可能フィールドに対応するわけではありません。利用可能なフィールドは、GetFieldオブジェクトのObjectStreamClassから取得できます。
getObjectStreamClassメソッドは、ストリーム内のクラスを表すObjectStreamClassオブジェクトを返します。これには、直列化可能フィールドの一覧が含まれています。ストリーム内にフィールドが存在しない場合は、
defaultedメソッドが true を返します。要求されたフィールドが現在のクラスの直列化可能フィールドでない場合は、IllegalArgumentException がスローされます。各
getメソッドは、指定された直列化可能フィールドをストリームから返します。背後のストリームが例外をスローした場合は、入出力例外がスローされます。現在のクラスの直列化可能フィールドの名前および型に、名前または型が一致しない場合は、IllegalArgumentException がスローされます。ストリームのそのフィールドに明示的な値が含まれていない場合は、デフォルトの値が返されます。