gpt4 book ai didi

java - 是否可以确定 Java 类对象在 VM 之间是否相同

转载 作者:行者123 更新时间:2023-11-30 10:13:13 25 4
gpt4 key购买 nike

我有许多特定程序在不同机器上运行的实例。除了停机安装新版本外,该程序一直在运行,并且在安装过程中,不同版本的程序可以在不同的机器上运行。但是由于有这么多不同的安装,我想确保从类的特定运行生产者的类的一个定义(有效地)序列化的数据与数据接收者的类定义相同。

因此,显而易见的解决方案是使用 serialVerionUID,但更改它会破坏其他内容,人们可能会忘记更新之间的 ID,而类对象本身 (object.getClass()) 无法提供该 ID。 System.identityHashcode() 也没有任何值(value)。

所以我想真正的问题是如果有人给你一个类对象并且你引用了预期的类对象,有没有办法判断这两个类是否代表相同的东西完全,字段,字段定义等,即使该类具有完全相同的包和名称

最佳答案

您可以比较类的 .class 文件中字节的 hashCode(),您知道该类是可用的,因为类已加载。

下面是一些获取哈希值的代码:

public static int getHash(Class<?> clazz) throws IOException {
return Arrays.hashCode(clazz.getClassLoader().getResourceAsStream(clazz.getName().replace(".", "/")).readAllBytes());
}

关于java - 是否可以确定 Java 类对象在 VM 之间是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51449717/

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