この例題は、直列化可能フィールドAPIを使った直列化の方法を示します。「クラスが、クラス内の既存のフィールド以外のフィールドを直列化可能と定義できる」ことの実例です。 この例題ではバージョン管理がサポートされており、単にwriteObjectメソッドを書き換えてデータ形式をカスタマイズすることとは異なります(カスタム・データ形式の例を参照)。
この例では、Serializable Fields APIを使用して、矩形の内部表現をx1、y1、x2、y2実装(OriginalClass.java
を参照してください)からPoint(x1,y1)、Point(x2,y2) (EvolvedClass.java
を参照してください)に変更し、外部表現はx1、y1、x2、y2のままです。 これにより、オリジナルの表現と展開された表現の間に双方向の互換性が確保されます。
展開を扱うほかのすべての例題と同様に、展開後のクラス(ARectangle)には、オリジナル・クラス(ARectangle)にコマンドserialverを使用して取得したserialVersionUIDフィールドを定義する必要があります。