2012-02-26 55 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 – 2012-02-26 22:26:01

回答

0

Peter Newton发现的Q&A的第一个答案有一个很有前途的方法。基本上,示例代码重载从流中读取类描述符的方法并调整序列版本ID。如果你正在为多个类做这个,你需要相应地调整代码。

但请注意,这是一个相当危险的事情。如果该类的传输表示不兼容,则最终可能会导致损坏的对象而不会发出任何警告。

1

你不知道知道该类是相同的。它们可能是相同的,但如果版本号已更改,那么内部的任何内容都可能发生更改。

你将需要序列化你的数据到别的东西(比如一个字符串)并反序列化它的另一端。