SerialVersionUID Java - SerialVersionUID 如何工作? [复制]
Posted
技术标签:
【中文标题】SerialVersionUID Java - SerialVersionUID 如何工作? [复制]【英文标题】:SerialVersion UID Java - How SerialVersionUID work? [duplicate] 【发布时间】:2017-06-01 06:14:33 【问题描述】:您好,我有一个关于 Java 中 SerialVersionUID
的问题。
如果我为class A
生成SerialVersionUID
,
A
的 2 个实例具有相同的 SerialVersion
关于类和对象的另一个唯一序列,关于 object1
和 object2
不同?或者怎么做?
不明白,请回复我。谢谢。
【问题讨论】:
SerialVersionUID 是一个静态字段,因此它“属于”类,而不是任何实例。 【参考方案1】:serialVersionUID 用于对象的版本控制。
如果我们没有在类中定义 serialVersionUID,并且任何 修改是在课堂上进行的,那么我们将无法反序列化 我们的类是因为java编译器生成的serialVersionUID 修改后的类将不同于旧的序列化对象,并且 反序列化过程最终会抛出 java.io.InvalidClassException
运行时的序列化与每个可序列化的类相关联 一个版本号,称为 serialVersionUID,在 反序列化以验证发送方和接收方 序列化对象已加载该对象的类 在序列化方面兼容。serialVersionUID object1 和 object2?
这将是相同的,因为串行版本 uid 是静态的(即类级别)
【讨论】:
【参考方案2】:SerialVersionUID 是识别类版本的方法。所以同一类的所有对象都将具有相同的 SerialVersionUID。 但是,如果您更改类,建议更改 SerialVersionUID。然后在不兼容的情况下,对象的序列化就会失败。
见:What is a serialVersionUID and why should I use it?
【讨论】:
以上是关于SerialVersionUID Java - SerialVersionUID 如何工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
java 序列化 serialVersionUID 的作用 和 两种添加方式