K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2108] serialVersionUID について
投稿者:くまきち
2018/02/25 22:24:30

『基礎からのWebアプリケーション開発入門』のP.280にあるリストA-22について質問させてください。 「//拡張子とContent-Typeの対応表」の部分について、P.70にあるリスト2-11では49行目に  private static final long serialVersionUID = 1L; という行がありますが、A-22にはありません。 これは、どのような違いがあってのことでしょうか?可能であれば、そもそも「serialVersionUID 」とは何かも教えて頂けるとありがたいです! よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2110] Re:serialVersionUID について
投稿者:(ぱ)こと管理人
2018/02/26 01:28:16

>「//拡張子とContent-Typeの対応表」の部分について、P.70にあるリスト2-11では49行目に > > private static final long serialVersionUID = 1L; > >という行がありますが、A-22にはありません。 >これは、どのような違いがあってのことでしょうか?可能であれば、そもそも >「serialVersionUID 」とは何かも教えて頂けるとありがたいです! serialVersionUIDは、シリアライズするクラスのバージョンを示すためのものです。 Javaだとシリアライズ機能でオブジェクトの内容をファイルに保存したりできますが、 プログラム側のバージョンが上がってクラスにメンバが増えたりした(かつ、そのメンバの 値がデフォルト値ではいけなくて、readObject()によるカスタマイズでも対応しないとか 細かい条件はありますが)場合は、バージョンアップ前のプログラムで保存したデータは バージョン違いで読み込めないということになります。 serialVersionUIDは、シリアライズするときに、そのクラスのバージョンを 示すためのものです(バージョンが違うと、デシリアライズ時にエラーになります)。 指定しなくても構いませんが、これを指定しないと、Eclipseでは警告が出たりします。 「private static final long serialVersionUID = 1L;」と書いておけば 警告は抑止できますが、シリアライズを扱っているわけでもない入門書で 余計なコードを入れるのもよろしくないかと思い、本書のサンプルコードでは 基本これは書いていない――はずなのですが、リスト2-11では、Eclipseに うっかり自動生成されたのが残ってしまったのかと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]