2011-10-20 10 views
1

オブジェクトをシリアル化してディスクに保存する必要があります。クラスがあまり変わっていない限り、Javaの組み込み関数を使用しています。私がクラスでうんざりし始めると、それは動作を止めることができます。シリアライズ、クラスの進化

ここではどのようなオプションがありますか?基本的に私たちがアップデートを持っていれば、私はすべてのユーザーのデータファイルを破壊したくありません。

これまでXML(同じ問題があります)へのシリアライズを試みました。また、config/dataファイルを手作業で作ろうとしました。基本的には、すべてをXMLに読み込んで読み込み、設定ファイルに基づいて新しいオブジェクトを作成します。これはうまくいくようですが、手作業がたくさんあるので、すべてをこれに変換するために永遠にかかるでしょう。

他のオプションはありますか?

答えて

0

私は、シリアライズされたオブジェクトに対して永続的な代理を持つことを大いに信じています。効果的なJavaには、それらを実装する方法について話す全体の章があります。

私のやり方は、自分のオブジェクトをコンストラクタにとり、それに応じて内部フィールドを設定する内部クラスを使用することです。実際のオブジェクトが進化するにつれて、新しいフィールドをプロキシに追加するか、まったく新しいプロキシを作成します(下位互換性のために古いフィールドを残します)。

詳細はthis articleを参照してください。

関連する問題