我正在对一堆代码进行质量检查,并发现了几个例子,其中开发人员有一个实现 Comparable 的 DTO。此 DTO 中有 7 或 8 个字段。compareTo 方法仅在一个字段上实现:
private DateMidnight field1; //from Joda date/time library
public int compareTo(SomeObject o) {
if (o == null) {
return -1;
}
return field1.compareTo(o.getField1());
}
同样,equals 方法被覆盖,基本上归结为:
return field1.equals(o.getField1());
最后hashcode方法实现是:
return field1.hashCode;
field1
永远不应该为 null 并且在这些对象中是唯一的(即我们不应该得到两个具有相同 的对象field1
)。
所以,实现是一致的,这是好的,但我应该担心只使用一个字段吗?这不寻常吗?是否可能导致问题或混淆其他开发人员?我正在考虑传递这些对象列表并且另一个开发人员使用某种 Map 或 Set 并从这些对象中获得异常行为的场景。任何想法表示赞赏。谢谢!