我的团队正在处理的代码有几个类,其中equals
并hashCode
没有在类层次结构中定义。我们希望实现Comparable
与compareTo
using 一致的equals
方法hashCode
,如下所示:
class MyClass implements Comparable<MyClass>
{
private String myProperty;
// Other properties, etc.
....
public int compareTo(MyClass obj) {
// Natural ordering comparisons
...
// Reach here if natural ordering properties are equivalent
return new Integer(this.hashCode()).compareTo(new Integer(obj.hashCode());
}
}
这被认为是一种有效的实施方式Comparable
吗?hashCode
使用我应该注意的默认实现是否有任何陷阱?
更新:我们正在努力的行为如下:
- 首先比较类属性,按照我们定义的自然顺序。
- 如果两个对象的给定属性是等价的,我们将继续进行排序中的下一个。
- 如果所有属性都等价,则仅当 时才返回 0
this.equals(obj)
。