SerialVersionUID Java - SerialVersionUID 是如何工作的?

SerialVersion UID Java - How SerialVersionUID work?

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

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

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

  1. serialVersionUID is used for version control of object.

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

  3. 运行时的序列化与每个可序列化关联class 一个版本号,称为 serialVersionUID,在期间使用 反序列化到 验证一个 序列化对象已为该对象加载 classes 与序列化兼容.

serialVersionUID object1 and object2?

一样,因为串行版本uid是静态的(即class级)