Serializable を実装したクラスを使用しています。Eclipse から「シリアル UID がありません」という警告が表示されますが、クラスの書き込みと読み取りは正常に機能します。UIDを持つSerializableクラスの目的は何ですか? それは単なる良い習慣ですか、それとも最終的にそれなしでは私のクラスは機能しませんか? どんな数字でもいいの?
質問する
2017 次
1 に答える
5
異なるVMを使用して、または異なるマシンで同じクラスをシリアル化および逆シリアル化する場合は重要です。UIDは、逆シリアル化しようとしているクラスが本当に自分が思っているクラスであるかどうかを確認するために使用されます。したがって、コード内のクラスに1つのUIDがあり、シリアル化されたクラスに別のUIDがある場合、de -シリアル化は失敗します。
UIDのないクラスは、JVMによって自動的に与えられますが、異なるJVMが同じクラスに同じUIDを与えるという保証はありません。
詳細については、Serializableインターフェースのjavadocをお読みください。
任意の数にすることができますか?
理想的には、クラスの特定のバージョン(ハッシュなど)に固有の番号である必要があります。シリアル化されたフィールド(非transient
)に影響するクラスに変更を加える場合は、UIDを変更する必要があります。EclipseはUIDを自動的に生成できると思います。
于 2012-05-22T18:46:51.403 に答える