【问题标题】:SerialVersion UID Java - How SerialVersionUID work? [duplicate]SerialVersionUID Java - SerialVersionUID 如何工作? [复制]
【发布时间】:2017-06-01 06:14:33
【问题描述】:

您好,我有一个关于 Java 中 SerialVersionUID 的问题。 如果我为class A 生成SerialVersionUIDA 的 2 个实例具有相同的 SerialVersion 关于类和对象的另一个唯一序列,关于 object1object2 不同?或者怎么做? 不明白,请回复我。谢谢。

【问题讨论】:

  • SerialVersionUID 是一个静态字段,因此它“属于”类,而不是任何实例。

标签: java serializable serialversionuid


【解决方案1】:
  1. serialVersionUID 用于对象的版本控制。

  2. 如果我们没有在类中定义 serialVersionUID,并且任何 修改是在课堂上进行的,那么我们将无法反序列化 我们的类是因为java编译器生成的serialVersionUID 修改后的类将不同于旧的序列化对象,并且 反序列化过程最终会抛出 java.io.InvalidClassException

  3. 运行时的序列化与每个可序列化的类相关联 一个版本号,称为 serialVersionUID,在 反序列化以验证发送方和接收方 序列化对象已加载该对象的类 在序列化方面兼容

serialVersionUID object1 和 object2?

这将是相同的,因为串行版本 uid 是静态的(即类级别)

【讨论】:

    【解决方案2】:

    SerialVersionUID 是识别类版本的方法。所以同一类的所有对象都将具有相同的 SerialVersionUID。 但是,如果您更改类,建议更改 SerialVersionUID。然后在不兼容的情况下,对象的序列化就会失败。

    见:What is a serialVersionUID and why should I use it?

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 2012-11-15
      • 2019-04-23
      • 2014-07-04
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多