gpt4 book ai didi

Java 序列化,UID 没有改变。我可以向类中添加新的变量和方法吗?

转载 作者:太空狗 更新时间:2023-10-29 22:36:15 26 4
gpt4 key购买 nike

我有一个序列化的类。现在我需要使用 setter 和 getter 方法向类中添加一个新变量。此类在 RMI 中通过线路发送。

在不改变UID的情况下,是否可以为其添加新的参数和getter、setter方法?我尝试编写一个通过线路发送的示例类,并且没有更改 UID,并为其添加了新的参数以及 getter 和 setter 方法。另一方面,我测试了它,但我仍然正确地得到了值。我曾假设,如果我添加新参数、getter 和 setter 方法,我需要更改 UID。我错了吗?

最佳答案

如果您硬编码一个类的 SerialVersionUID(通常为 1L),存储一些实例,然后重新定义该类,您基本上会得到这种行为(这或多或少是常识):

  1. 新字段(存在于类定义中,不存在于序列化实例中)被分配一个默认值,该值对于对象为 null,或者与未初始化字段的原语值相同。
  2. 删除的字段(不存在于类定义中但存在于序列化实例中)将被忽略。

所以一般的经验法则是,如果您只是添加字段和方法,而不更改任何现有内容,并且如果您对这些新字段的默认值没有问题,那么您通常就没有问题。

关于Java 序列化,UID 没有改变。我可以向类中添加新的变量和方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124664/

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