首页 > 解决方案 > 特殊标识符:serialVersionUID 和 serialPersistentFields

问题描述

我了解这些字段是什么以及如何使用它们,但我想知道这一点:

Java 编译器如何在其编译步骤中实际处理此类特殊字段?它真的只根据名称查找变量吗?

这似乎很像非Java...除了serialVersionUIDand serialPersistentFields,还有其他的吗?

标签: javaserializationjavacserialversionuid

解决方案


不幸的是,是的,这些成员是在运行时通过名称神奇地发现的。(实际上,情况更糟;无论它们是静态的还是非静态的、公共的还是私有的等,都适合查找。)你是对的,这不是一个好的做法,也不是很像 Java,但这是我们的遗产被困住了。

有关完整列表,请参阅序列化规范:https ://docs.oracle.com/en/java/javase/11/docs/specs/serialization/index.html


推荐阅读