Eclipse は正しく serialVersionUID を生成してくれます。しかし、生成を再度行わない限り、ファイルを変更しても ID が自動的に更新されないため、これは受動的なコード生成のようです。
内容を変更するたびに serialVersionUID を生成する方法はありますか? 「保存アクション」にはそのようなオプションが含まれていないようです-誰かがこれを行う方法を見つけましたか?
シリアライゼーションに影響を与えない変更を元に戻すことができるように、IDE の保存アクションなどと組み合わせることができると便利です。
よろしく、トウコ
編集: @gustafc: これには 2 つの主なポイントがあります。
- 私が正しく理解していれば、異なるコンパイラはserialVersionUIDの異なる値になる可能性があります
- Serializable APIから:ただし、デフォルトの serialVersionUID の計算は、コンパイラの実装によって異なる可能性があるクラスの詳細に非常に敏感であり、逆シリアル化中に予期しない InvalidClassExceptions が発生する可能性があるため、すべての直列化可能なクラスで serialVersionUID 値を明示的に宣言することを強くお勧めします。
- サーバーでオブジェクトを実行するようなコマンド パターンを使用しています。そのため、オブジェクトのコンテンツは変更されていませんが、クライアントとサーバーでクラスのコンテンツが異なる場合をキャッチするとよいでしょう。
- しかし、もう一度考えてみると、コンテンツの変更だけがそれを変更するので、これはおそらく自動生成された値では機能しないでしょうか? だから、実際には自動インクリメントされたserialVersionUIDが欲しい
これは理にかなっていますか?
まとめ、さらに考えた結果、変更のたびに自動インクリメントされた serialVersionUID の方がさらに良いでしょう...