覆蓋equals時遵守通用約定

2021-06-19 12:04:27 字數 472 閱讀 7930

類的每個例項都只與它自身相等。

1,類的每個例項本質都是唯一的。

2,不關心類是否提供了「邏輯相等」的測試功能。

3,超類以及覆蓋了equals,從超類繼承過來的行為對於子類也是合適的。

4,類是私有的或是包級私有的,可以確定它的equals方法永遠不會被呼叫。

equals方法實現了等價關係:

1,自反性。x.equals(x)必須返回true

2,對稱性:y.equals(x)返回true時,x.equal(y)必須返回true

3,傳遞性:如果x.equals(y)返回true時,並且y.equals(z)也返回true,那麼x.equals(z)也必須返回true

4,一致性:只要equals的比較操作在物件中所用的資訊沒有被修改,多次呼叫x.equals(y)就會返回一致的結果

5,非空性:對於任何非null的引用值x,x.equals(null)必須返回false

覆蓋equals時遵守通用約定

不覆蓋equals時,類的每個例項都只與它自己相等。如果類有自己的邏輯相等概念,且超類未覆蓋equals以實現期望的行為,這時需覆蓋equals。約定內容 1.自反性 對於任何非null的引用值x,x.equals x 必須返回true 2.對稱性 對於任何非null的引用值x和y,當且僅當y.eq...

Java學習筆記 覆蓋equals時請遵守通用約定

不覆蓋equals的情況 1 類的每個例項本質上是唯一的 2 不關心類是否提供了 邏輯想等 的測試功能 3 超類已經覆蓋了equals,從超類繼承過來的行為對於子類也是合適的 4 類是私有的或包級私有的,可以確定他的equals方法永遠不會被呼叫。應該覆蓋equals的情況 如果類具有自己特有的 邏...

第9條 覆蓋equals時總要覆蓋hashCode

在每乙個覆蓋equals方法的類中,都必須覆蓋hashcode方法,如果不這麼做,會導致這個類無法結合所有基於雜湊的集合的正常使用,如hashmap,hashset,hashtable。object規範中有這麼一條 如果兩個物件根據equals object 方法比較是相等的,那麼呼叫這物件中任意乙...