电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:2日期: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
相關文章:
主站蜘蛛池模板: 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 钣金加工厂家-钣金加工-佛山钣金厂-月汇好 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 球盟会·(中国)官方网站 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 期货软件-专业期货分析软件下载-云智赢 | 西门子代理商_西门子变频器总代理-翰粤百科 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 焦作网 WWW.JZRB.COM | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 |