我正在編寫一堆代碼,並發現了一些開發人員擁有實現Comparable的DTO的實例。這個DTO有7或8個字段。 CompareTo方法也僅在一個領域已經實現:我應該關注這個compareTo/equals/hashCode實現嗎?
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
不應該爲空,並且在這些對象中將是唯一的(即,我們不應該得到兩個對象相同的field1
)。
所以,實現是一致的,這是很好的,但我應該擔心只有一個字段被使用?這是不尋常的嗎?是否可能導致問題或混淆其他開發人員?我正在考慮這些對象的列表被傳遞並且另一個開發人員使用Map或Set somesort並從這些對象中獲取異常行爲的場景。任何想法讚賞。謝謝!
在一個切線上... [Joda-Time](http://www.joda.org/joda-time/)的用戶應該注意到這個字段是一個類型([DateMidnight`]](http:///www.joda.org/joda-time/apidocs/org/joda/time/DateMidnight.html))現在已被棄用,應該避免。現在適當的類型是[`DateTime`](http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html),並且調用[`withTimeAtStartOfDate`](http ://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#withTimeAtStartOfDay--)。 – 2015-07-06 02:22:51