ObjectStreamClass は、直列化ストリームに保管されるクラスの情報を返します。その記述子には、そのクラスの完全修飾名とその直列化バージョン UID が示されます。streamVersionUID に示される固有のオリジナルクラスバージョンに対し、このクラスはストリームを書き込むことができ、またそこから読み込むことができます。
package java.io;
public class ObjectStreamClass
{
public static ObjectStreamClass lookup(Class cl);
public String getName();
public Class forClass();
public long getSerialVersionUID();
public String toString();
}
lookup メソッドは、Java VM の指定されたクラスに対する ObjectStreamClass 記述子を返します。このクラスに serialVersionUID が定義されていれば、それがこのクラスから取り出されます。定義されていなければ、Java Virtual Machine にあるこのクラスの定義から計算されます。指定されたクラスが Serializable でも Externalizable でもない場合、 null が返されます。ストリームに書き込めるのは、java.io.Serializable か java.io.Externalizable のインタフェースが実装されているクラスのクラス記述だけです。
getName メソッドは、そのクラスの完全修飾名を返します。このクラス名はストリームに保管され、そのクラスがロードされるときに使われます。
forClass メソッドは、そのクラスがローカル Virtual Machine で認識されていれば、それを返します。そうでなければ、null を返します。
getSerialVersionUID メソッドは、このクラスの serialVersionUID を返します。これについては、ストリーム固有識別子 を参照してください。このクラスによって定義されていない場合は、米国連邦情報局によって定義された Secure Hash Algorithm (SHA) を使って、クラスの名前、インタフェース、メソッド、フィールドから計算された値が返されます。
toString メソッドは、クラス記述子を表示可能な表現で返します。これには、クラスの名前と serialVersionUID などが含まれます。
serialver を使えば、クラスが直列化可能かどうかを判断し、その serialVersionUID を得ることができます。-show を指定して呼び出すと、このプログラムは簡単なユーザインタフェースを表示します。クラスが直列化可能かどうかを知り、その serialVersionUID を得るには、そのクラス名全体を指定し、Enter か Show ボタンを押します。表示された文字列は、コピーして、展開されたクラスに張り付けることができます。

static final long SerialVersionUID = 3487495895819393L;
serialVersionUID は、そのクラス定義を反映したバイトストリームのシグネチャを使って計算されます。ストリームのシグニチャの計算には、米国連邦情報技術局 (NIST)の Secure Hash Algorithm (SHA-1) が使用されます。64 ビットハッシュには、最初の 2 つの 32 ビットが使われます。プリミティブデータ型からバイト列への変換には、java.lang.DataOutputStream が使用されます。このストリームへ入力される値は、クラスに対する JAVA 仮想マシン (VM) の指定によって定義されます。ストリームにおける項目の順序は次のとおりです。