2012-02-26 83 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

你不知道知道該類是相同的。它們可能是相同的,但如果版本號已更改,那麼內部的任何內容都可能發生更改。

你將需要序列化你的數據到別的東西(比如一個字符串)並反序列化它的另一端。