2012-02-26 8 views
1

JavaシステムクラスのserialVersionUIDをオーバーライドする方法はありますか?システムクラスのserialVersionUIDをオーバーライド

エラーの例: java.io.InvalidClassException:java.util.Date;ローカルクラスは互換性がありません:ストリームclassdesc serialVersionUID = 7523895402267505689、ローカルクラスserialVersionUID = 7523967970034938905

クライアントとサーバーには異なるバージョンのjavaがあります。しかし、私はクラスが同じであることを知っているので、私は直列化を使用できるようにしたい。

+0

http://stackoverflow.com/questions/1816559/make-java-runtime-ignore-serialversionuids –

答えて

0

Peter Newtonが見つけたQ&Aの最初の回答は有望なアプローチです。基本的に、サンプルコードは、ストリームからクラス記述子を読み込み、シリアルバージョンIDを微調整するメソッドをオーバーロードします。複数のクラスでこれを行う場合は、それに応じてコードを調整する必要があります。

しかし、これはかなり危険なことです。送信されたクラスの表現に互換性がない場合は、警告なしに破損したオブジェクトで終了する可能性があります。

1

は、クラスが同じであることを認識していません。それらは同じかもしれませんが、バージョン番号が変更された場合、内部の内容は変更されている可能性があります。

データをシリアル化して(文字列のような)別のものにシリアル化し、もう一方の端でデシリアライズする必要があります。

関連する問題