我很清楚合同需要确保hashCode
与equals
一致,equals
与compareTo
也一致。然而,在实践中,这经常被违反。是否有任何工具、技术或库可以自动测试这种一致性?
不幸的是,我怀疑答案是否定的,但能够有一个单元测试来检测这种事情并利用库调用或框架将会很有用,而不需要为每个重要的情况手动编写自定义测试。
如果不清楚我的一致性意味着什么,对于hashCode
和equals
,我指的是以下内容:
如果两个对象根据equals(Object)方法是相等的,则在这两个对象上调用hashCode方法必须产生相同的整数结果。
对于equals
和compareTo
,我参考了以下内容:
如果对于类C,当且仅当e1.compareTo(e2) == 0与e1.equals(e2)具有相同的布尔值时,类C的自然排序被认为是与equals一致的。
HashMap
和TreeMap
中,然后看看能否取回它们;-) - user207421