如何序列化 Java 类的静态数据成员?
2022-09-01 05:58:38
当我们序列化对象时,静态成员不会被序列化,但是如果需要这样做,有什么出路吗?
当我们序列化对象时,静态成员不会被序列化,但是如果需要这样做,有什么出路吗?
第一个问题是为什么需要序列化静态成员?
静态成员与类(而不是实例)相关联,因此在序列化实例时包含它们没有意义。
第一种解决方案是使这些成员不是静态的。或者,如果这些成员在原始类和目标类(相同的类,但可能不同的运行时环境中)中相同,则根本不序列化它们。
我对如何跨静态成员发送有一些想法,但我首先需要看到用例,因为在所有情况下,这意味着更新目标类,我还没有找到一个很好的理由这样做。
伙计们,静态并不意味着不可变。例如,我可能希望序列化计算的整个状态(是的,包括静态字段 - 计数器等),以便在JVM和/或主机重新启动后恢复。
如前所述,正确的答案是使用可外部化而不是可序列化的接口。然后,您可以完全控制外部化的内容和方式。