gpt4 book ai didi

Java - 新对象定义读取旧对象

转载 作者:行者123 更新时间:2023-12-01 15:05:00 25 4
gpt4 key购买 nike

不确定标题是否合适,但这是我的问题

例如,我写了一个类,

版本 1

class SomeClass
{
public method1()
{
...
...
}

public method2()
{
...
...
}
}

SomeClass 的对象被不同的模块推送到消息队列

module1
module2
module3

然后正在处理module4

现在,module3 需要一些附加功能 method3(),因此我向 SomeClass 添加了附加功能

版本 2

class SomeClass
{
public method1()
{
...
...
}

public method2()
{
...
...
}

public method3()
{
...
...
}
}

并用这个新类更新了 module3module 4,但 module1 和 module2 没有

module3 会将 SomeClass (版本 2)的对象发布到消息队列,但是 module1module2仍然发布 SomeClass 的对象(版本 1)

具有版本 2 定义的模块 4 读取版本 1 定义的对象会有问题吗?

最佳答案

理论上它可以工作,因为当您将对象推送到消息队列(使用ObjectMessage)时,它是使用标准 java 序列化机制进行序列化的。序列化不关心方法。它仅使用字段。这意味着您可以序列化对象 v1,然后使用类版本 2 反序列化它。但我相信您必须向您的类添加特殊字段 private static long serialVersionUID 并手动管理其值。

因此,具有相同字段数量和顺序且仅方法不同的 v1 和 v2 将具有相同的 serialVersionUID

关于Java - 新对象定义读取旧对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090302/

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