4

現在、何もシリアル化する予定はありませんが、シリアル化可能なすべての外部クラスと、静的にネストされたクラスにを指定SerialVersionUIDします。これが適切な方法だからです。

しかし、私はここでそれを読みました

ローカルクラスや匿名クラスを含む内部クラス(つまり、静的メンバークラスではないネストされたクラス)のシリアル化は、いくつかの理由から強く推奨されていません。..。

だから私の質問は:

内部クラスと匿名クラスをSerialVersionUIDそれぞれ与える必要がありますか、それともそれらにを追加する必要があり@SuppressWarnings("serial")ますか?

片方がもう片方より適切ですか?

いずれにせよ、そのようなクラスへの参照は一時的なものにします。なぜなら、それらをシリアル化したくないからです。

4

1 に答える 1

4

次の理由から、それらにserialVersionUIDを指定します。

  • それは良い一般的な習慣であり、それを指定することは確かに害はありません。
  • 警告は抑制ではなく、対処する必要があります。
  • 内部クラスが十分に大きくなると、内部クラスがトップレベルクラスに変更されることがあります。

これらの内部クラスのインスタンスをシリアル化しないのは(リンク先のドキュメントに記載されているすべての理由から)良いことです。あなたが妄想的であるか、他の開発者が同じ良い判断を下さないかもしれないと心配しているなら、writeObject無条件に例外をスローするメソッドを各内部クラスに持つことによってその選択を強制することができると思います。

于 2013-03-18T13:02:54.123 に答える