怎樣正確改寫Equals方法

2021-06-15 21:09:16 字數 716 閱讀 2465

地球人都知道,equals方法需要滿足自反,對稱,傳遞,一致,非空特性,如果我們需要在**中改寫equals方法,怎麼樣才能保證這幾個特性呢?

(1)使用==操作符來檢查實參是都指向當前物件的乙個物件

(2)使用instanceof操作符檢查實參是都為正確型別

(3)將實參轉換成正確物件

(4)根據業務需求判斷當前物件與實參物件是否相等

(5)最後,必須進行檢查傳遞,一致和對稱

如果滿足了以上5點,基本上可以算是成功改寫equals方法,當然還必須同時改寫hascode方法

boolean

equals( object obj )

...if( target.getid()

!=null

&&target.getid().length()

>0)

...return

equalsbuilder.reflectionequals(

this

, obj);

改寫後的hashcode方法(使用common-lang)

原理:如果id屬性不為空,則直接使用id的hashcode,如果為空,則使用這個物件的所有屬性來生成雜湊值

public

inthashcode()

...return

hashcodebuilder.reflectionhashcode(

this

);

怎樣正確建立MySQL索引的方法詳解

索引類似大學圖書館建書目索引,可以提高資料檢索的效率,降低資料庫的io成本。mysql在300萬條記錄左右效能開始逐漸下降,雖然官方文件說500 800w記錄,所以大資料量建立索引是非常有必要的。mysql提供了explain,用於顯示sql執行的詳細資訊,可以進行索引的優化。什麼是索引?mysql...

重寫equals方法

對於重寫equals方法有以下例子 object類中的常用方法。object類是所有類的根類,定義了所有物件都具備的功能。api 應用程式介面 文件 class person extends object 判斷是否是同齡人。這個方法也是在比較兩個person物件是否相等。注意 person類中是否有...

equals方法重寫

來自的文章 一 為什麼equals 方法要重寫?判斷兩個物件在邏輯上是否相等,如根據類的成員變數來判斷兩個類的例項是否相等,而繼承object中的equals方法只能判斷兩個引用變數是否是同乙個物件。這樣我們往往需要重寫equals 方法。我們向乙個沒有重複物件的集合中新增元素時,集合中存放的往往是...