いくつかの例外処理コードを実行していますが、serialVersionUIDという名前のコードが表示されました。このuidは何のためにありますか?例外に限定されているのですか、それともすべてのクラスで使用できますか?このIDの利点は何ですか?
3 に答える
serialVersionUID
は特定のクラスのバージョンを定義するフィールドですが、seriializing
& deseriializing
.. しばらくの間生産されている 3 つのフィールドを持つクラスがあるシナリオを考えてみましょうEmployee
(従業員オブジェクトのシリアル化されたバージョンが多数存在する可能性があることを意味します)。クラスを更新して (4 番目のフィールドなど) を含めると、以前のすべてのクラス (シリアル化されている) を新しいクラスにキャストまたは逆シリアル化することができず、例外が発生します。
この問題を回避するために、フィールドを使用して、新しいクラスが実際には異なるバージョンであることserialVersionUID
を伝えることができます (を変更することにより)。JVM
serialVersionUID
@Farmor
&@Tom Jefferys
はほぼ同じことを言っていますが、例を使用すると、物事はずっと簡単に見えます.
シリアライゼーションに使用され、 を実装するすべてのクラスで宣言する必要がありますSerializable
。
これは事実上、シリアル化されたクラスが、逆シリアル化しようとしているクラス定義と一致するかどうかを確認するために JVM が使用できるバージョン番号です。
詳細については、http: //download.oracle.com/javase/1,5.0/docs/api/java/io/Serializable.htmlを参照してください。
シリアライズ可能およびデシリアライズ可能な互換性があるかどうかを判断することです。serialVersionUID
両方の実装が同じであり、互換性がある場合Serializable
。
serialVersionUID
また、Eclipse がSerializable
.
編集: インターフェイスに関する @Spychos の正しいコメントを含めるように更新されましたSerializable
。