亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中l(wèi)ombok的@Data引發(fā)問題詳解

 更新時間:2020年09月08日 09:43:07   作者:張占嶺 lind  
這篇文章主要給大家介紹了關(guān)于java中l(wèi)ombok的@Data引發(fā)問題的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

我們問題lombok是可以精簡我們的代碼的,讓開發(fā)人員把精力放在業(yè)務(wù)上,而它封裝的注解我們在使用時,需要多注意一下;@Data注解它是一個混合注釋,它包含了@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode的功能,而我們問題@EqualsAndHashCode是重寫equals和hash的注釋,如果你是一個類,那可以不關(guān)心它;而如果你的類中有繼承(父類子類),那么就要注意一下了。

危險的@Data

子類不能完全代表父類

@EqualsAndHashCode注解里有個字段callSuper,它的默認(rèn)值是false,意思是在重寫時,不會將父類的字段寫到equals里;而@Data這個注解由于包含了@EqualsAndHashCode,所以它也有這個特性,即子類強制實現(xiàn)了重寫equals和hashCode,并且只重寫了自己的屬性,這時,問題就來了,當(dāng)兩個對象比較時,如果子類屬性相同而父類屬性不同,結(jié)果也為true,這是非常嚴(yán)重的bug。

定義兩種類,基類People,和兩個子類Man和Woman

 @Data
 class Person {
 String name;
 }

 @Data
 //重寫時帶上父類字段
 @EqualsAndHashCode(callSuper = true)
 class Man extends Person {
 Boolean hunting;
 }

 @Data
 //重寫equals時不會帶上父類的字段,同種類型比較時,當(dāng)子類字段相同時,結(jié)果就為true,這顯然是不準(zhǔn)確的.
 @EqualsAndHashCode(callSuper = false)
 class Woman extends Person {
 Boolean spin;
 }

測試的結(jié)果,我們是可以猜出來的,父類里的字段不相同時,結(jié)果應(yīng)該為false,但如果 @EqualsAndHashCode(callSuper = false),結(jié)果竟然是true,這也是正常的,因為它并沒有重寫父類的屬性name,所以只要子類字段相同,結(jié)果就認(rèn)為相同了。

 @Test
 public void supperSubEqual() {
 Man man = new Man();
 man.setName("zzl");
 man.setHunting(true);
 Man man1 = new Man();
 man1.setHunting(true);
 man1.setName("lind");
 log.info("man==man1 ? {}", man.equals(man1)); // false

 Woman woman = new Woman();
 woman.setName("zzl");
 woman.setSpin(true);
 Woman woman1 = new Woman();
 woman1.setSpin(true);
 woman1.setName("lind");
 log.info("woman==woman1 ? {}", woman.equals(woman1)); // true
 }

總結(jié)

在使用@Data時,我們盡量把 @EqualsAndHashCode(callSuper = true)加上,因為你不加,它相當(dāng)于是false;或者杜絕使用@Data,而用@Getter,@Setter,@ToString代替它。

到此這篇關(guān)于java中l(wèi)ombok的@Data引發(fā)問題的文章就介紹到這了,更多相關(guān)java lombok的@Data引發(fā)問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?使用注解存儲和讀取?Bean對象操作方法

    Spring?使用注解存儲和讀取?Bean對象操作方法

    在?Spring?中,要想更加簡單的實現(xiàn)對?Bean?對象的儲存和使用,其核心就是使用?注解?,本文主要就是演示如何使用注解實現(xiàn)對?Bean?對象的存取操作,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • springboot?html調(diào)用js無效400問題及解決

    springboot?html調(diào)用js無效400問題及解決

    這篇文章主要介紹了springboot?html調(diào)用js無效400的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中JWT的使用的詳細(xì)教程

    Java中JWT的使用的詳細(xì)教程

    JWT的本質(zhì)就是一個字符串,它是將用戶信息保存到一個Json字符串中,然后進(jìn)行編碼后得到一個JWT token,并且這個JWT token帶有簽名信息,接收后可以校驗是否被篡改,所以可以用于在各方之間安全地將信息作為Json對象傳輸,本文介紹了Java中JWT的使用,需要的朋友可以參考下
    2023-02-02
  • java通過方向鍵控制小球移動的小游戲

    java通過方向鍵控制小球移動的小游戲

    這篇文章主要為大家詳細(xì)介紹了java通過方向鍵控制小球移動的小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java流程控制之循環(huán)結(jié)構(gòu)while、do...while

    Java流程控制之循環(huán)結(jié)構(gòu)while、do...while

    這篇文章主要介紹了Java流程控制之循環(huán)結(jié)構(gòu)while及do...while,文章除了講解循環(huán)結(jié)構(gòu)while和do...while之外,還講解了他們之間的區(qū)別,下面我們就一起進(jìn)入文章講解更多詳細(xì)內(nèi)容吧
    2021-12-12
  • Java hashCode原理以及與equals()區(qū)別聯(lián)系詳解

    Java hashCode原理以及與equals()區(qū)別聯(lián)系詳解

    在 Java 應(yīng)用程序執(zhí)行期間,在同一對象上多次調(diào)用 hashCode 方法時,必須一致地返回相同的整數(shù),前提是對象上 equals 比較中所用的信息沒有被修改。從某一應(yīng)用程序的一次執(zhí)行到同一應(yīng)用程序的另一次執(zhí)行,該整數(shù)無需保持一致
    2022-11-11
  • SpringBoot實現(xiàn)埋點監(jiān)控

    SpringBoot實現(xiàn)埋點監(jiān)控

    本文主要介紹了SpringBoot實現(xiàn)埋點監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot MVC應(yīng)用(2)

    玩轉(zhuǎn)spring boot,如何快速搭建一個MCV程序?這篇文章為大家詳細(xì)主要介紹了一個MCV程序的快速搭建過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • java反射簡單實例

    java反射簡單實例

    這篇文章主要介紹了java反射機制,以一個簡單實例形式分析了Java反射的原理與實現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • 解決異常FileNotFoundException:class path resource找不到資源文件的問題

    解決異常FileNotFoundException:class path resource找不到資源文件的問題

    今天小編就為大家分享一篇關(guān)于解決異常FileNotFoundException:class path resource找不到資源文件的問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論