国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java中lombok的@Data引發問題詳解

瀏覽:3日期:2022-08-25 13:20:56

前言

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

危險的@Data

子類不能完全代表父類

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

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

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

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

@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 }

java中lombok的@Data引發問題詳解

總結

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

到此這篇關于java中lombok的@Data引發問題的文章就介紹到這了,更多相關java lombok的@Data引發問題內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 免费成人 | 视频在线一区二区 | 高清视频 一区二区三区四区 | 手机在线免费毛片 | 精品视频一区二区三三区四区 | 看一级特黄a大一片 | 日韩三级在线观看视频 | a一级毛片录像带 录像片 | 奇米四色综合久久天天爱 | 中文字幕亚洲欧美日韩不卡 | 一级一级一片在线观看 | 欧美一级带 | 一级片日韩 | 中文字幕视频在线 | 国产伦一区二区三区四区久久 | 欧美成人免费观看的 | 国产精品视频免费播放 | 久久精品成人免费看 | 亚洲美女在线观看亚洲美女 | 亚洲综合精品一二三区在线 | 免费一级毛片在级播放 | 日本红怡院亚洲红怡院最新 | 日韩区在线观看 | 99久久精品免费看国产高清 | 国内偷拍免费视频 | 久久黄色一级视频 | 欧美成人免费观看 | 亚洲第十色 | 国产盗摄视频 | 日本亚欧乱色视频在线网站 | 亚洲国产精品久久综合 | 免费区欧美一级毛片精品 | 波多野在线视频 | 日韩在线一区二区三区免费视频 | 国产精品高清全国免费观看 | 久久亚洲国产精品五月天 | 国产精品一区亚洲一区天堂 | 亚洲另类激情综合偷自拍图 | 欧美日韩a级片 | 欧美日韩国产高清一区二区三区 | 国产丝袜不卡一区二区 |