Web アプリケーションの一般的なシナリオ:
- アプリケーションには、Session に格納する必要があり、シリアライズ可能なクラスが多数あります
- 開発者は、「Serializable クラスは serialVersionUID を実装していません」という警告を大量に受け取ります。
- 開発者が肩をすくめて IDE の「serialversionUID を追加」をクリックすると、問題は解決しますか?
ソリューションは本質的にそれを意味するため、原則としてserialVersionUIDを自動的に追加するのは好きではありません
- 最も重要なことは、開発者が「自分の変更がいつシリアル化を壊すのか、いつ壊さないのかを知っていて、JVM の代わりにそれを制御したい」と述べていることですが、実際には、彼はそれらのことを知らず、それらを制御したくないのです。
- serialVersionUID = 6266256561409620894L を追加するのは紛らわしく醜いです (わかりました、1L を使用できます)。
クラスの互換性が問題となるアプリケーションに serialVersionUID を追加することを理解しており、開発者は積極的にそれを考慮し、関連する問題を理解しています。
典型的な Web アプリケーションでは、クラスのシリアル化がいつ壊れるかどうかはあまり重要ではありません。新しいバージョンがデプロイされると、関係のないシリアライズされたセッションが壊れることがありますが、通常は問題になりません (また、シリアライズされたセッションのバージョン互換性を実際に適切に処理するアプリケーションはほとんどありません)。
結論: 「ソース ファイルで serialVersionUID を常に明示的に定義する」というアドバイスは単純ではありませんか?