gpt4 book ai didi

java - 类定义中的序列版本 ID

转载 作者:行者123 更新时间:2023-12-01 11:29:32 24 4
gpt4 key购买 nike

我正在尝试将我的类(class)添加到缓存中。如果我这样做,它会抛出类似的错误

Caused By: java.io.NotSerializableException: com.test.package.PropertyGroup
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

所以我开始知道我的对象应该实现 Serializable我的类(class)的界面。我已经实现了可序列化接口(interface)。但它显示警告,我的类应该有带有两个选项的序列版本 ID default serial version IDgenerated serial version ID 。这两个之间有什么区别,即 serialVersionUID =1L和一些随机生成的值 serialVersionUID = 8243252575074067947L;

最佳答案

如果您的类的现有实例已在某处序列化,并且您需要反序列化它们,请在当前更改之前使用该类的生成版本。这是因为加载到 JVM 中的类需要与序列化实例具有相同的serialVersionUID。由于序列化实例没有显式设置,因此它将是自动生成的 ID。

如果您没有任何需要反序列化的实例,则默认 ID 更易于阅读,并且更容易根据需要手动递增。

由于听起来您以前从未序列化过此类(因为您刚刚将其标记为 Serialized),因此请使用默认的 1L 版本。

关于java - 类定义中的序列版本 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com