2015-02-09 112 views
0

我有一組汽車的地方級轎車如下:Overrding equals和hashCode

public class Car{ 

    private Tyre tyre; 

    private Engine engine; 

} 

爲了使用集汽車,以避免重複,我需要重寫了hashCode和equals轎車類。我的問題是我還需要爲Tire和Engine類實現equals和hashcode嗎?

+0

如果使用eclipse,你可以右鍵單擊你的源代碼頁,去Source,然後生成hashCode()和equals()。爲所有需要它們的課程做好準備。如果您覺得需要,可以編輯。 – csmckelvey 2015-02-09 19:07:56

回答

2

如果你將在CarhashCode方法使用hashCode結果您tyreengine,那麼你就需要在TyreEngine也覆蓋hashCode。如果您將使用在Carequals方法equals結果您tyreengine,那麼你就需要在TyreEngine也覆蓋equals

4

不,你不知道。

如果兩個Car小號平等取決於Tyre S的平等和Engine小號的車都有,然後實施equalshashCode方法爲TyreEngine類和Carequals,並委託給他們hashCode方法可能是一個非常好的主意。但是,如果Car平等是以某種其他方式確定的(例如,像汽車ID),那麼對於TyreEngine而言,沒有equalshashCode方法可能非常有意義。