目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
JavaTM オブジェクトが、直列化を使って状態をファイルに保管したり、かたまりとしてデータベースに保管したりする場合、そのデータを読み込むクラスのバージョンがそのデータを書き込んだバージョンと異なる可能性があります。バージョン管理には、クラスの同一性に関し、いくつかの根本的な問題があります。 たとえば、互換性のある変更とは何か、という問題があります。「互換性のある変更」とは、クラスとその呼び出し元との間の規約に影響を与えない変更です。
この項では、目標、前提条件、および解決策について記述します。 この解決策は、変更できるものを制限し、機構を慎重に選択することによって、この問題に対処しようとするものです。
ここで示す解決策では、フィールドの追加やクラスの追加によって展開するクラスを「自動的に」処理する機構を示します。直列化では、バージョン管理は、バージョンごとにクラス固有のメソッドを実装することなく行われます。ストリーム形式は、クラス固有のメソッドを呼び出すことなく処理 (トラバース) されます。