[英]Getting the names of all the instance fields used inside the equals function
我正在从事与Java中的哈希函数相关的项目。 要求用户重写 equals函数并将其提供给我们。 当覆盖等于时,他可以使用该类的所有实例字段的子集,我将其视为对象的重要字段。 如何提取用户在equals方法内使用的所有字段的名称?
我可以使用Reflection API来获取所有字段的名称,但我只想在equals方法中使用的那些字段来比较对象。(使用反射不是一种约束,我只想一种解决方法问题。)
我所知道的反射API无法做到这一点。
我知道的唯一方法是阅读代码。
如果您的项目依赖于此,我担心您将不得不重新考虑它。
正确的做法是一起重写equals
和hashCode
,这由Joshua Bloch在Effective Java第3章中定义。 类设计器应该使用他们决定使用的字段为您提供适当的hashCode
。
也许您的方案可以使用该hashCode
返回的值作为开始。
问题在于,您无法控制所依赖的库开发人员的工作。
如果你有那种控制的,因为你只在乎你写的类,那么它的另一个讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.