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