【问题标题】:how does java deserialize an object whose class isn't on the classpath but whose superclass is?java如何反序列化其类不在类路径但其超类在的对象?
【发布时间】:2011-04-14 02:43:45
【问题描述】:

假设我有扩展 Bar 的类 Foo。我创建了一个 Foo 的实例并将其序列化为一个文件。

其他一些代码读取该文件并尝试重新创建它包含的实例。此代码可见类 Bar,但类 Foo 不可见。

它如何能够反序列化回 Bar 的实例?序列化输出中是否包含类层次元数据?

【问题讨论】:

  • 你有没有亲自尝试过,看看它是否有效?
  • 它似乎在工作,但我正在处理的代码比将单个类写入文件要复杂一些。明天我会鬼混,看看我能不能把它归结为一个小例子。

标签: java serialization polymorphism


【解决方案1】:

它根本无法反序列化它。该类必须存在于类路径中。

【讨论】:

    【解决方案2】:

    唯一可行的方法是,序列化实例的代码首先序列化类字节,然后在读取器端读取类字节,并在读取之前使用类加载器创建反序列化的类实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 2018-12-05
      • 2011-01-11
      • 1970-01-01
      • 2019-02-21
      • 2022-11-16
      • 1970-01-01
      相关资源
      最近更新 更多