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