我有一組汽車的地方級轎車如下:Overrding equals和hashCode
public class Car{
private Tyre tyre;
private Engine engine;
}
爲了使用集汽車,以避免重複,我需要重寫了hashCode和equals轎車類。我的問題是我還需要爲Tire和Engine類實現equals和hashcode嗎?
我有一組汽車的地方級轎車如下:Overrding equals和hashCode
public class Car{
private Tyre tyre;
private Engine engine;
}
爲了使用集汽車,以避免重複,我需要重寫了hashCode和equals轎車類。我的問題是我還需要爲Tire和Engine類實現equals和hashcode嗎?
如果你將在Car
的hashCode
方法使用hashCode
結果您tyre
和engine
,那麼你就需要在Tyre
和Engine
也覆蓋hashCode
。如果您將使用在Car
的equals
方法equals
結果您tyre
和engine
,那麼你就需要在Tyre
和Engine
也覆蓋equals
。
不,你不知道。
如果兩個Car
小號平等取決於在Tyre
S的平等和Engine
小號的車都有,然後實施equals
和hashCode
方法爲Tyre
和Engine
類和Car
的equals
,並委託給他們hashCode
方法可能是一個非常好的主意。但是,如果Car
平等是以某種其他方式確定的(例如,像汽車ID),那麼對於Tyre
和Engine
而言,沒有equals
或hashCode
方法可能非常有意義。
如果使用eclipse,你可以右鍵單擊你的源代碼頁,去Source,然後生成hashCode()和equals()。爲所有需要它們的課程做好準備。如果您覺得需要,可以編輯。 – csmckelvey 2015-02-09 19:07:56