【问题标题】:override serialVersionUID for system classes覆盖系统类的 serialVersionUID
【发布时间】:2012-03-16 11:58:16
【问题描述】:

有没有办法覆盖java系统类的serialVersionUID?

错误示例: java.io.InvalidClassException: java.util.Date;本地类不兼容:stream classdesc serialVersionUID = 7523895402267505689,本地类serialVersionUID = 7523967970034938905

客户端和服务器有不同版本的java。但是因为我知道类是相同的,所以我希望能够使用序列化。

【问题讨论】:

标签: java serialization deserialization


【解决方案1】:

你不知道这些类是相同的。它们可能是相同的,但如果版本号发生了变化,那么内部的任何东西都可能发生变化。

您需要将数据序列化为其他内容(如字符串)并在另一端反序列化。

【讨论】:

    【解决方案2】:

    Peter Newton 发现的Q&A 的第一个答案有一个很有前途的方法。基本上,示例代码重载了从流中读取类描述符并调整串行版本 ID 的方法。如果您对多个类执行此操作,则需要相应地调整代码。

    但请注意,这是一件相当危险的事情。如果类的传输表示不兼容,您可能会在没有任何警告的情况下得到损坏的对象。

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 1970-01-01
      • 2023-03-21
      • 2012-12-07
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多