古いバージョンのオブジェクトをファイルからロードしようとするとどうなりますか?
たとえば、オブジェクトを作成し、FileOutputStream を使用してこのオブジェクトをファイルに保存したとします。次に、フィールドを追加し、このオブジェクトをリロードしようとすると、Java はオブジェクトをまったく認識しないか、フィールドをデフォルトに設定しますか...?
ありがとう :)
古いバージョンのオブジェクトをファイルからロードしようとするとどうなりますか?
たとえば、オブジェクトを作成し、FileOutputStream を使用してこのオブジェクトをファイルに保存したとします。次に、フィールドを追加し、このオブジェクトをリロードしようとすると、Java はオブジェクトをまったく認識しないか、フィールドをデフォルトに設定しますか...?
ありがとう :)
ファイルに保存されている serialVersionUID がクラスの現在のバージョンのものと一致しないため、おそらく例外が発生します。
デフォルトでは、Java は単にエラーになります。
「古いバージョン」を読み取る方法を提供したい場合は、readObject メソッドを実装する必要があります。
シリアライゼーションおよびデシリアライゼーション プロセス中に特別な処理を必要とするクラスは、次の正確なシグネチャを持つ特別なメソッドを実装する必要があります。
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;