我應該創建自己的equals()方法,它覆蓋父類的equals(方法)。該方法接受一個Counter對象作爲它的參數。在下面的代碼中,我想要一個簡單的方法來確定Counter對象參數是否等於Counter類的當前實例,如果有意義的話。我通過逐一比較每個對象的字段,在下面的代碼中實現了這一點,但我想要一個更簡單的方法來做到這一點。看起來像這樣的東西會很好:「result =(otherCounter == new Counter(min,max)?true:false);」,但我知道這是不對的,並且出現錯誤。如何比較兩個Counter對象中變量的相等性,如果Counter對象c1和c2不同,那麼c1.equals(c2)將爲false?如何比較同一類型的兩個對象的「狀態」?
public boolean equals(Object otherObject)
{
boolean result = true;
if (otherObject instanceof Counter)
{
Counter otherCounter = (Counter)otherObject;
result = (otherCounter.min == this.min) &&
(otherCounter.max == this.max) &&
(otherCounter.currentCount == this.currentCount) &&
(otherCounter.rolloverOccurrence == this.rolloverOccurrence) ? true : false;
}
return result;
}
您應該將'result'初始化爲'false',因爲如果它不是對象的實例,那麼它就不相等。我會說你目前的實現很好,當然,這是很長時間的囉嗦,因爲這是你得到的最好結果 – MadProgrammer 2014-09-05 05:30:26
不是問題的一部分,但是當你重寫equals時不要忘記重寫hashCode ... – shlomi33 2014-09-05 05:57:48