gpt4 book ai didi

java - 获取 equals 函数中使用的所有实例字段的名称

转载 作者:行者123 更新时间:2023-11-29 08:43:05 25 4
gpt4 key购买 nike

我正在从事与 Java 哈希函数相关的项目。用户需要覆盖 equals 函数并提供给我们。虽然 overriding equals 他可以使用我认为是对象的重要字段的类的所有实例字段的子集。如何提取用户在 equals 方法中使用的所有字段的名称?

我可以使用反射 API 获取所有字段的名称,但我只希望那些在 equals 方法中使用过的字段来比较对象。(使用反射不是约束,我只是想要一种解决问题的方法。)

最佳答案

据我所知,没有办法用反射 API 做这样的事情。

我知道的唯一方法是阅读代码。

如果您的项目依赖于此作为要求,我担心您将不得不重新考虑它。

正确的做法是同时覆盖 equalshashCode,正如 Joshua Bloch 在 Effective Java chapter 3 中所定义的那样.类设计者应该使用他们决定使用的字段为您提供正确的 hashCode

也许您的方案可以使用该 hashCode 返回值作为开始。

问题是您无法控制您所依赖的库的开发人员将做什么。

如果您确实有那种控制权,因为您只关心 编写的类,那么这是另一个讨论。

关于java - 获取 equals 函数中使用的所有实例字段的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703902/

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