直列化、展開、および新しいスーパークラスの追加

概説

直列化の際にバージョン管理を使って、新しいスーパークラスを持つクラスを展開する方法を示します。たとえば、最初のクラスが次の構造を持つとします。

  class A {...};
  class C extends A {...};

展開したクラスが次の構造を持つとします。

  class A {...};
  class B extends A {...};
  class C extends B {...};

この場合、新しいバージョンのサブクラス C は古いバージョンのサブクラス C を読めなければなりません。逆に、古いバージョンのサブクラス C も新しいバージョンのサブクラス C を読めなければなりません。この例題では、この原理を説明します。

展開されたクラス (ASuperClassASubClass) は、オリジナルクラス (ASuperClassASubClass) で serialver コマンドを使用して取得する serialVersionUID フィールドを定義する必要があります。

この例題では、スーパークラス (A と B) は Serializable インタフェースを実装します。実装しなければ、サブクラス C が A と B のフィールドの保存と復元の責任を負うことになってしまいます。このトピックの詳細は、「スーパークラスが直列化可能でない場合の直列化」を参照してください。

青色のバー

関連情報:

ソースファイル
例題の実行
例題リスト

Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.