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

概説

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

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