[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
質問
を指定した場合、Eclipseは警告を発します。
serialVersionUID
が欠落している。
シリアライズ可能なクラス Foo は、静的な final serialVersionUID フィールドの型は long
とは何ですか?
serialVersionUID
また、なぜそれが重要なのですか? 例えば
serialVersionUID
が問題になります。
解決方法は?
のドキュメントは
java.io.Serializable
は、おそらくあなたが得ることができるのと同じくらい良い説明です。
シリアライゼーションランタイムは、各シリアライゼーション可能なクラスに対して
serialVersionUID
これは、デシリアライズの際に、シリアライズされたオブジェクトの送信者と受信者が、シリアライズに関して互換性のあるそのオブジェクトのクラスをロードしたことを確認するために使用されます。もし、受信者がオブジェクトのクラスをロードした場合、そのクラスは異なる
serialVersionUID
対応する送信者クラスのものと異なる場合、デシリアライゼーションでは
InvalidClassException
. シリアライズ可能なクラスは、独自の
serialVersionUID
というフィールドを宣言することで、明示的に
serialVersionUID
で、static、final、type は
long
:
<ブロッククオートANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
シリアライザブルクラスが明示的に
serialVersionUID
の場合、シリアライゼーションランタイムはデフォルトの
serialVersionUID
の値は、Java(TM) Object Serialization Specification に記述されているように、クラスのさまざまな側面に基づいて決定されます。しかし、それは
強く推奨
すべてのシリアライズ可能なクラスは、明示的に
serialVersionUID
の値は、デフォルトの
serialVersionUID
の計算は、コンパイラの実装によって異なるクラスの詳細に非常に敏感であり、その結果、予期しない
InvalidClassExceptions
は、デシリアライゼーション時に そのため、一貫した
serialVersionUID
の値は、異なるJavaコンパイラの実装にまたがって、シリアライザブルクラスは、明示的な
serialVersionUID
の値を指定します。また
serialVersionUID
なぜなら、そのような宣言はその場で宣言したクラスにしか適用されないからです。
serialVersionUID
フィールドは、継承されたメンバとして有用ではありません。
関連
-
Methodのinvokeメソッド実装のJavaリフレクション
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
Spring Boot による HTTPS アクセスの設定
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策
-
[解決済み] Static Final Long serialVersionUID = 1L [重複]。