我有一個超類有兩個變量(int a
)(int b
),並有一個子類,通過改寫2超類方法擴展超類的功能,改進方法現在在子類中。作爲我的子類的一部分,我現在有一個新的int
(int c
),它是一個唯一的ID(UUID)。Overriden Superclass Equals和HashCode,並認爲我應該這樣做與子類
我明白了平等很難與equals
方法
我可以覆蓋超equals
和hashCode
方法,以顯示平等維護,也做了子類equals
和hashCode
方法同樣基於上述我的情況?
我最初覆蓋了超類中的equals
和hashCode
方法。如果它也應該由子類中的額外實例變量(int c
)爲子類完成。我知道應該有一個hashCode
方法來顯示這一點,並且如果haschCode
被更改,那麼equals
方法的子類必須更改?
我真的很困惑,最好做什麼。
我在想,如果我的超類equals
和hashCode
方法能顯示平等關係嗎?它是允許連同我的超equals
和hashCode
重寫的方法,該子類可以顯示爲等於int a
,int b
和int c
和子類的hashCode
方法更新,以顯示int
小號a
,b
和c
獨特的散列碼進行比較?
我想在這兩個變量的超equals
方法和更新哈希碼和int
S表示這些變量3 a
,b
和c
在equals
方法,更新哈希碼進行比較我int
小號a
和b
的。超級中的int c
是唯一的嗎?
非常感謝這裏的任何建議,因爲我相信忽略和不處理子類equals
和hashCode
中的int c
方法可能是一個不行。
在此先感謝
hashcode和equals的合約說如果a和b的hashCode()函數的a.equals(b)應該返回相同的值。反過來並不需要是真的。 – 2011-12-15 15:23:47