クラス名が異なる完全に異なるクラスがあると仮定します。serialVersionUID
クラスで異なるものを使用する必要がありますか?
もしそうなら、なぜそれが必要なのですか?
JRE はどのようにデシリアライゼーションを正確に行いますか?
クラス名が異なる完全に異なるクラスがあると仮定します。serialVersionUID
クラスで異なるものを使用する必要がありますか?
もしそうなら、なぜそれが必要なのですか?
JRE はどのようにデシリアライゼーションを正確に行いますか?
いいえ、異なる SUID は必要ありません (すべてのクラスで 1 を使用できます)。
オブジェクトがシリアル化されるとき、クラス識別子 (package.name.ClassName) と SUID は両方ともヘッダーの一部であり、オブジェクトが属するクラスを識別し、書き込み側と読み取り側の間に非互換性がないことを確認します
ただし、クラスを構造的に変更する (フィールドを追加/削除する) 場合は、そのクラスに新しい SUID を設定する必要があります (デバッグ中に、.class ファイルに基づいて実行時に JVM に新しいものを作成させることができます)。