ObjectStreamClass
は、直列化ストリームに保管されるクラスの情報を提供します。その記述子には、そのクラスの完全修飾名とその直列
化バージョン UID が示されます。SerialVersionUID
は、このクラスがストリームを書き込んだり、読み込んだりできる固有のオリジナルクラスバージョンを特定します。
package java.io;
public class ObjectStreamClass
{
public static ObjectStreamClass lookup(Class cl);
public String getName();
public Class forClass();
public ObjectStreamField[] getFields();
public long getSerialVersionUID();
public String toString();
}
lookup メソッドは、Virtual Machine の指定されたクラスに対する
ObjectStreamClass 記述子を返します。このクラスに serialVersionUID
が定義されていれば、それがこのクラスから取り出されます。定義されていなければ、Virtual Machine
にあるこのクラスの定義から計算されます。指定されたクラスが Serializable でも Externalizable
でもない場合、null が返されます。 getName
メソッドは、そのクラスの完全修飾名を返します。このクラス名はストリームに保管され、そのクラスがロードされる
ときに使われます。
forClass
メソッドは、ObjectInputStream.resolveClass メソッドがローカルの Virtual Machine 内に
Class を検出した場合に、その Class を返します。 検出できなかった場合は、null
を返します。
getFields
メソッドは、このクラスの直列化可能フィールドを表す ObjectStreamField
オブジェクトの配列を返します。
getSerialVersionUID
メソッドは、このクラスの serialVersionUID を返します。「4.6
ストリーム固有識別子」を参照してください。このクラスによって定義されていない場合は、NIST(米国国立標準
技術研究所)によって定義されている Secure Hash Algorithm (SHA)
を使って、クラスの名前、インタフェース、メソッド、フィールドから計算されたハッシュ値が返されます。
toString メソッドは、クラス記述子のプリント可能な表現を返します。
クラス記述子としては、クラスの名前と serialVersionUID があります。