![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
最近コーディングツールをEclipse3.1に乗り換えたのですが、"Serializable class without serialVersionUID"という警告文に出くわしました。
Sunのserializableインタフェースに関するドキュメントを参照したところ、serialversionUIDを明示的に宣言することによってJavaコンパイラの実装環境の差異に対応可能である、という主旨で読み取れたのですが、それがどのようなことであるのか今ひとつ具体的にイメージできません。
また、serialversionUIDを明示的に定義する方法についても、手持ちの文献やwebの検索では調べ切れませんでした。
上記について御存知の方が居られましたら、御教示お願いします。
No.2ベストアンサー
- 回答日時:
classファイルの互換性などに関するものです。
シリアライズ/デシリアライズを行うときや、クラスのロードを行うときに関連してきます。
Serializableなclassファイルには必須なのですが、ソース中にないときは勝手に付加されます。
>serialversionUIDを明示的に定義する方法
手順1.自分が作成したクラスに対して、serialverコマンドを実行
http://www.techfirm.co.jp/manual/jdk11ja/tooldoc …
参照
手順2.自分のクラスにserialversionUIDを定義
上記で求めたものを、自分のクラスに追加します。
名前が決まっていることを除けば普通のlong型定数ですね。
宣言の形式は↓のような感じです。
static final long serialVersionUID = -6849794470754667710L;
具体的なサンプルは、JDKのソースを参照してみるといいです。
御回答ありがとうございます。
serialVersionUID値の取得法についてはEclipseの標準プラグインにも生成機能が含まれているようですが、開発環境によってはEclipseが使用できないケースも考えられるので、JDKからserialver.exeを使用する方向で検討しています。
有益なアドバイスを頂き、ありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?5a7ff87)
No.1
- 回答日時:
これは、Eclipse 3.1で、以前のバージョンで作ったプロジェクトをインポートしたなどしたのでしょうか。
こういう場合に、この警告に出くわすことがあるようです。とりあえず警告をなくしたいのならば以下の設定を変更してみてください。
・「Windows」メニューの「Preferences」メニューを選び、設定ウインドウを呼び出します。
・左の項目から「Compiler」内の「Errors/Warnings」を選びます。
・右側に表示された項目から「Potential programming problems」をクリックします。すると更に細かな項目が展開表示されます。
・ここから「Serializable class without serialVersionUID」を「Ignore」に変更します。
これで警告は出なくなると思います。このへんは、実は私もまだよくわかってないのですが、この種の警告が現れたら、この「Errors/Warnings」の中の項目を調べてみるとよいと思います。
なお、serialversionUIDの定義については、impelments Seriarizableしたクラスの中に、
static final long serialVersionUID = シリアル値;
・・という形でフィールドを定義すればいいようです。
御回答ありがとうございます。
プロジェクトのインポートは行っていないのですが、従来使用していたjcpadと同じ調子でコーディングしたところ、原因不明の警告が表示されたために疑問に思っていました。
オプションで警告を無効化する方法は調べがついていましたが気分のいいものではありませんし、仕事の上でJavaと付き合う以上は知っておいたほうが良いだろうと考え質問させて頂いた次第です。
serialVersionUIDの定義法については、手続きとしてはフィールドを定義すれば良いのですね。引き続き、値の取得法について調べてみます。有益な御示唆を頂き、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
- 政治学 政教分離原則について説明した次の文章のうち,適当でないものを1つ選びなさい。 ①日本国憲法において政 1 2023/01/22 14:22
- 日本語 <代名詞><指示詞>という誤り 4 2022/04/01 11:06
- 事件・犯罪 刑法についてだれか助けてください。 2 2022/06/05 04:08
- 事件・犯罪 刑法についてです 2 2022/06/04 03:11
- 政治 立民案で被害者救済を本当にできるのだろうか? 立民の限界を感じる。 特定財産損害誘導行為による被害の 3 2022/11/05 21:20
- 日本語 使われているのに辞書にのっていない言葉のレポートの記載 5 2022/04/29 22:09
- 日本語 【は】について。感想を聞かせてください。特に日本語学習者の方。質問も大歓迎。 9 2022/09/30 15:46
- 英語 英文解釈。 "Evidence" の理解 10 2022/11/07 09:27
- 相続・贈与 遺産分割協議に同意できない場合のその後のこと 2 2022/04/20 15:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスのマウスホイー...
-
自分は特に何もしていないのに...
-
数学の計算問題。 3年間同じク...
-
同じパッケージ、クラス名が含...
-
私はクラスLINEにまだ入れてな...
-
「天声人語」をインターネット...
-
A・B・Cクラスとは?
-
同一パッケージにあるクラスが...
-
息子のクラスの子のお父様が亡...
-
Nとダイゴさん
-
標準モジュールとクラスモジュ...
-
自作のクラスファイルがインポ...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
配列の重複する値とその個数を...
-
IPアドレスからクラスを識別...
-
VB.netのコンテナークラスとは...
-
進学校通ってたんですけど、眼...
-
SDカード性能表示における倍...
-
派生クラスをリストする
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
オブジェクト指向プログラミン...
-
同一パッケージにあるクラスが...
-
SQLです教えてくださいお願いし...
-
自作のクラスファイルがインポ...
-
packageとimport の違いって?
-
重複エラーを解決するには
-
1 つのヘッダファイルに複数の...
-
UMLのクラス図はmain()も含むん...
-
main()を持つクラスが2つ以上...
-
3年間同じクラスになる確率
-
河合塾のクラス分けについて
-
EclipseでJSPのコンパイルエラー
-
どこからも呼ばれていない無意...
-
IPアドレスの3バイト目の呼び方
-
同じクラスにならない確率を教...
-
IPアドレスのクラスAを取得して...
おすすめ情報