SerialVersionUID の役割:
シリアル化中にバージョンの互換性を維持するために、逆シリアル化では、バージョンがアップグレードされたときにもオブジェクトの一意性が維持されます。
生成方法は 2 つあります。
1 つはデフォルトの 1L です。たとえば、以下のようになります。
1 つは、クラス名、インターフェイス名、メンバーのメソッドと属性などに基づいて、次のような 64 ビットのハッシュ フィールドを生成することです。
プライベート静的最終ロングシリアルバージョンUID = xxxxL;
クラスが Serializable インターフェイスを実装する場合、serialVersionUID が定義されていない場合、Eclipse はこれを提供します。
プロンプト関数は、それを定義するように指示します。 Eclipse で、クラス内の警告アイコンをクリックすると、Eclipse は
2 つの生成方法が自動的に与えられます。定義したくない場合は、次のようにすることもできます。
オフにして次のように設定できます。
ウィンドウ ==> 設定 ==> Java ==> コンパイラ ==> エラー/警告 ==>
潜在的なプログラミングの問題
SerialVersionUID のない Serializable クラスの警告を無視するように変更するだけです。
互換性の問題を考慮しない場合は、この機能をオフにしてください。ただし、どのカテゴリでも Serializable インターフェイスが実装されている限り、この SerialVersionUID が追加されていない場合、Eclipse は警告プロンプトを表示します。 class Serializable には下位互換性があります。
クラスがシリアル化されてハード ディスクに保存された後、クラスのフィールドを変更 (追加または削減、または名前変更) した場合、逆シリアル化時に例外が表示され、非互換性の問題が発生します。
ただし、serialVersionUID が同じ場合、デフォルト値の type を使用して異なるフィールドが逆シリアル化され、非互換性の問題を回避できます。