直列化の際にバージョン管理を使って、新しいスーパークラスを持つクラスを展開する方法を示します。たとえば、最初のクラスが次の構造を持つとします。
class A {...}; class C extends A {...};展開したクラスが次の構造を持つとします。
class A {...}; class B extends A {...}; class C extends B {...};この場合、新しいバージョンのサブクラス C は古いバージョンのサブクラス C を読めなければなりません。逆に、古いバージョンのサブクラス C も新しいバージョンのサブクラス C を読めなければなりません。この例題では、この原理を説明します。
展開されたクラス (ASuperClass と ASubClass) は、serialVersionUID フィールドを定義する必要があります。このフィールドは、オリジナルクラス (ASuperClass と ASubClass) で serialver コマンドを使用して取得することができます。
この例題では、スーパークラス (A と B) は Serializable インタフェースを実装します。実装しなければ、サブクラス C が A と B のフィールドの保存と復元の責任を負うことになってしまいます。この問題の詳細は、「スーパークラスが直列化可能でない場合の直列化」を参照してください。