-1

可能重复:
Java 中的序列化版本 uid

我们知道Java序列化机制忽略静态字段。如果是这样,那么反序列化器如何知道序列化器的serialVersionUID。serialVersionUID 始终是要序列化的类的静态字段。感谢您的帮助。

4

3 回答 3

5

serializedVersionUID 写入流,即使它是静态的。

然后将其用于反序列化,以将其与当前可用版本的类进行比较。

请注意,它不是作为每个实例的一部分编写的,而是作为“ObjectStreamClass”的一部分,它为流中想要使用它的所有实例定义类。

于 2012-06-12T08:29:16.553 回答
2

Class被反序列化的是所有Classpath数据都是已知的。

更新(感谢@Thilo):

"and equally importantly, the serializedVersionUID is written to the stream, even though it is static." – Thilo
于 2012-06-12T08:26:53.213 回答
0

serialVersionUID从“序列化”对象的未存储实例的类中检索。如果已定义,则将其“存储”在已编译的字节码中,否则将使用某种算法进行计算。

请参阅下面实现Serializable接口的类的字节码。

于 2012-06-12T08:38:23.723 回答