繁体   English   中英

获取在equals函数内使用的所有实例字段的名称

[英]Getting the names of all the instance fields used inside the equals function

我正在从事与Java中的哈希函数相关的项目。 要求用户重写 equals函数并将其提供给我们。 覆盖等于时,他可以使用该类的所有实例字段的子集,我将其视为对象的重要字段。 如何提取用户在equals方法内使用的所有字段的名称?

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

我所知道的反射API无法做到这一点。

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

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

正确的做法是一起重写equalshashCode ,这由Joshua Bloch在Effective Java第3章中定义。 类设计器应该使用他们决定使用的字段为您提供适当的hashCode

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

问题在于,您无法控制所依赖的库开发人员的工作。

如果你有那种控制的,因为你只在乎写的类,那么它的另一个讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM