teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2018/12/27 01:42

投稿

yukkuri
yukkuri

スコア624

answer CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  > ファイル等に書き込んだ時と そこから読み込んだ時でserialVersionUIDの値が異なる場合、読み込み時点でInvalidClassExceptionが発生する。
21
21
 
22
-
22
+ あと、
23
23
  > セッションをDBに詰め込んでそれをデシリアライズしたときに問題が起きないかのチェック
24
24
 
25
25
  私の知識不足で理解できていないのですが、上のサイトが参考になると思います。

1

追記

2018/12/27 01:42

投稿

yukkuri
yukkuri

スコア624

answer CHANGED
@@ -2,4 +2,24 @@
2
2
 
3
3
  >この値を確認するためにgetSerialVersionUIDメソッドを自動生成し、system.out.printlnで出力したのですが「1」とコンソールには出力されます。
4
4
 
5
- getSerialVersionUIDの実装にもより、ソースがないのでなんとも言えませんが、1に設定されていてそれをそのまま返す、とかだったら絶対に1になります。また、これはソースにもよるので、そのソース(serialVersionUIDをつけているクラス)もだすべきです。
5
+ getSerialVersionUIDの実装にもより、ソースがないのでなんとも言えませんが、1に設定されていてそれをそのまま返す、とかだったら絶対に1になります。また、これはソースにもよるので、そのソース(serialVersionUIDをつけているクラス)もだすべきです。
6
+
7
+ # 追記
8
+
9
+ > serialVersionUIDは固定なので
10
+
11
+ 違います。[参考にしたサイト](http://www.ne.jp/asahi/hishidama/home/tech/java/serial.html#serialVersionUID)によると、
12
+
13
+ > この定数は、復元前後でクラスのバージョンが異なっていないかを識別する為のものらしい。
14
+ なので、クラス内のフィールドやメソッド(の名前や型)に変更があった場合は 計算し直すのが筋だと思われる。
15
+ が、「変更されない」あるいは「実際には受け渡しは行わない」という割り切りで常に固定値(1とか)を指定しておく手もないわけではない。
16
+
17
+ ということだそうです。
18
+ exceptionはこういうことでしょうか。
19
+
20
+ > ファイル等に書き込んだ時と そこから読み込んだ時でserialVersionUIDの値が異なる場合、読み込み時点でInvalidClassExceptionが発生する。
21
+
22
+
23
+ > セッションをDBに詰め込んでそれをデシリアライズしたときに問題が起きないかのチェック
24
+
25
+ 私の知識不足で理解できていないのですが、上のサイトが参考になると思います。