-1

重複の可能性:
Java のシリアル化バージョン uid

Java シリアライゼーション メカニズムは静的フィールドを無視することがわかっています。これである場合、デシリアライザーがシリアライザーの serialVersionUID をどのように認識しているか。serialVersionUID は常に、シリアル化されるクラスの静的フィールドです。ご協力ありがとうございました。

チェン

4

3 に答える 3

5

は静的ですがserializedVersionUID 、ストリームに書き込まれます。

次に、逆シリアル化で使用され、現在使用可能なバージョンのクラスのものと比較されます。

すべてのインスタンスの一部として記述されているのではなく、それを使用するストリーム内のすべてのインスタンスのクラスを定義する「ObjectStreamClass」の一部として記述されていることに注意してください。

于 2012-06-12T08:29:16.553 に答える
2

Class逆シリアル化された は にあるためClasspath、すべてのデータが認識されます。

更新(@Thiloに感謝):

"and equally importantly, the serializedVersionUID is written to the stream, even though it is static." – Thilo
于 2012-06-12T08:26:53.213 に答える
0

serialVersionUID「シリアル化された」オブジェクトのインスタンスが格納されていないクラスから取得されます。定義されている場合は、コンパイルされたバイトコードに「格納」されます。定義されていない場合は、何らかのアルゴリズムを使用して計算されます。

Serializableインターフェイスを実装するクラスのバイトコードは以下を参照してください。

于 2012-06-12T08:38:23.723 に答える