lombok的@EqualsAndHashcode注解詳解
有時候我們在實體類上面會使用@Data注解,這個注解帶了@EqualsAndHashcode注解。
一、用法
- ①of 用來指明你要用什么字段來重寫equals和hashcode(具體怎么重寫看下文)
- ②callSuper 這個選項只能用在有父類情況下,如上圖如果沒有Father那么會報錯。默認是false,當改成true后,會調(diào)用父類的equals方法(具體看下文例子)
那么上文中這樣設置,new了2個child,不管是equals還是hashcode那么他們都是一樣的
二、lombok是怎么重寫equals和hashcode方法
equals:
- 父類:
- 子類:
hashcode:
- 父類:
- 子類:
總結(jié)
1、使用了@EqualsAndHashcode注解,那么他們都將重寫equals和hashcode方法,而這兩個方法都是根據(jù)你of指定的屬性(默認全部)而生成的。
2、繼承時候父類通常也要加上該屬性,否則equals為false,hashcode會不一樣
3、使用集合類時候也要小心一點,例如hashmap,會造成2個對象但是會覆蓋(雖然我們業(yè)務邏輯上認為他們相等)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java鏈表數(shù)據(jù)結(jié)構(gòu)LinkedList插入刪除元素時間復雜度面試精講
這篇文章主要為大家介紹了java LinkedList插入和刪除元素的時間復雜度面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件
本文主要介紹了IDEA 中使用 Big Data Tools 連接大數(shù)據(jù)組件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05idea ssm項目java程序使用十六進制rxtx包向串口發(fā)送指令的方法
這篇文章主要介紹了idea ssm項目java程序向串口發(fā)送指令并且使用十六進制 rxtx包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08MyBatis-Plus Sequence主鍵的實現(xiàn)
這篇文章主要介紹了MyBatis-Plus Sequence主鍵的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12關(guān)于Spring?Data?Jpa?自定義方法實現(xiàn)問題
這篇文章主要介紹了關(guān)于Spring?Data?Jpa?自定義方法實現(xiàn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Java實現(xiàn)簡單的銀行管理系統(tǒng)的示例代碼
這篇文章主要介紹了如何利用Java實現(xiàn)簡單的銀行管理系統(tǒng),可以實現(xiàn)存款,取款,查詢等功能,文中的示例代碼講解詳細,感興趣的可以了解一下2022-09-09在navicat中導入mysql數(shù)據(jù)庫詳細步驟(即.sql后綴的數(shù)據(jù)庫)
Navicat是MySQL非常好用的可視化管理工具,功能非常強大,能滿足我們?nèi)粘?shù)據(jù)庫開發(fā)的所有需求,下面這篇文章主要給大家介紹了關(guān)于如何在navicat中導入mysql數(shù)據(jù)庫(即.sql后綴的數(shù)據(jù)庫)的相關(guān)資料,需要的朋友可以參考下2023-04-04