我很清楚合同需要确保与 .hashCode
一致equals
并且equals
与compareTo
. 然而,这在实践中经常被违反。是否有任何工具、技术或库可以自动测试这种一致性?
不幸的是,我怀疑答案是否定的,但是能够对这种可以使用库调用或框架的东西进行单元测试而不需要手动编写自定义测试来为每个案例都很重要。
如果不清楚我所说的一致性是什么意思,hashCode
我equals
指的是以下内容:
如果两个对象根据 equals(Object) 方法相等,则对两个对象中的每一个调用 hashCode 方法必须产生相同的整数结果。
对于equals
和compareTo
我指的是以下内容:
当且仅当 e1.compareTo(e2) == 0 对于 C 类的每个 e1 和 e2 具有与 e1.equals(e2) 相同的布尔值时,C 类的自然排序被称为与 equals 一致。