質問

私は最近、SerialVersionUidを使用して、同じクラスの異なるバージョンをシリアル化/脱介入に互換性のある異なるバージョンを作成すると、Java 5以降には必要ないというコメントを読みました。これは正しいです?たぶん、それは共変量のリターンタイプと混同されました。だから皆さんと一緒にチェックアウトしたかったのです。

役に立ちましたか?

解決

Javadocs for Java 5 それでも必要であると述べています:

SerializableクラスがSerialVersionUidを明示的に宣言しない場合、シリアル化ランタイムは、Java(TM)オブジェクトシリアル化仕様に記載されているように、クラスのさまざまな側面に基づいてそのクラスのデフォルトのシリアルバージョン値を計算します。ただし、デフォルトのシリアルバージョンユーイド計算は、コンパイラの実装によって異なる場合があるため、デフォルトのシリアルバージョン使用の詳細に非常に敏感であるため、すべてのシリアル化可能なクラスがシリアルバージョンの値を明示的に宣言することを強くお勧めします。したがって、さまざまなJavaコンパイラの実装にわたって一貫したシリアルバージョンの値を保証するには、シリアル化可能なクラスは明示的なシリアルバージョンの値を宣言する必要があります。また、そのような宣言は、すぐに宣言するクラスにのみ適用されるため、可能な限りプライベート修飾子を使用することを明示的にシリアルバージョンで使用することを強くお勧めします。

他のヒント

Java 1.4以来、使用できました xmlencoder シリアル化の場合、これは他のほとんどのシリアル化ライブラリと同様に、シリアルバージョンを無視します。

ただし、ObjectOutputStreamを使用している場合、SerialVersionUIDの使用は変更されていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top