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

概説

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

  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, 2020, Oracle and/or its affiliates. All rights reserved.