2010-12-03 9 views
5

多くの私のデータベースエンティティでは、私はさまざまな値のシリアライズされたハッシュマップを保存しています。どのくらいの可能性は、それは私がもはやデータベースからハッシュマップを逆シリアル化することができないようにserialVersionUIDを変更するJavaハッシュマップクラスに組み込まれている?hashmapのようなjavaクラスを組み込み、serialVersionUIDを変更することはありますか?

これは新しいJavaバージョンのリリースで発生する可能性がありますか?

答えて

2

これは新しいJavaバージョンのリリースで起こりますか?

何かが起こることができれば、それは:)でしょうが、彼らはserialVersionUIDのを変更する場合、真剣に、彼らは下位互換性がないためにそれを設定している - おそらく、これらすべての年で起きていない何かを。

すべてのシリアライズ可能な非互換性は、あなたが '完全に安全' ではないです 'デフォルト' のためのものである

1

それは非常にそうではない可能性があります。 Javaオブジェクト直列化仕様では、serialVersionUID生成の正確なアルゴリズム(第4章 - http://download.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100)を定義し、型のバージョン管理の仕組みと互換性のある型の展開(第5章http://download.oracle.com/javase/6/docs/platform/serialization/spec/version.html)について説明します。

に戻る新しいJavaバージョンでは、HashMap定義に後方互換性のない変更が導入されると、新しい直列化UIDが追加されます。 Java 5では、Javaとの下位互換性がどのくらいのものかを明確に示しています。ジェネリック・タイプがどのようにタイプ消去されたかを見てください。あなたは完全に安全だと思います。起こりうる最悪の事は、廃止されたHashMapを見ていることです:)しかし、私はそれがまだ互換性があると確信しています。

0

をserialVersionUIDの。 RowSetの実装の1つの場合に起こりましたが、Swing全体では発生しないことが保証されていません。

しかし、それは非常に残っていますコアクラスのはありそうもありません。

関連する問題