callSuper = true的用法思考
1.1 简述
我们知道一般@ToString
和@EqualsAndHashCode
注解是加在子类上的,其它注解大同小异。
问题:使用继承时 调用@toString
方法 默认不会输出父类中的字段。
解决:设置@ToString(callSuper = true)
,callSuper
属性为true
就可以实现toString
方法输出父类中继承的属性。
描述:默认有@ToString(callSuper = false)
,写不写都存在。
1.2 示例讲解
1.2.1 示例一
父类:
子类:
加了@ToString(callSuper = true)
在AccountCustom
类上时:
问题:使用继承时 调用@EqualsAndHashCode(callSuper = false)
方法,默认不会比较父类属性中的内容和HashCode
。
解决:设置@EqualsAndHashCode(callSuper = true)
即可。
1.2.2 示例二
父类:
子类:
为@EqualsAndHashCode(callSuper = false)
时,父类和子类属性中的内容都一样时。
没加注解和加了注解在XiamoMiTV
类上时结果是一样的:
为@EqualsAndHashCode(callSuper = false)
时,父类属性中的内容都一样,子类属性中的内容不一样时。
没加注解和加了注解在XiamoMiTV
类上时结果是一样的:
为@EqualsAndHashCode(callSuper = false)
时,父类属性中的内容不一样,子类属性中的内容都一样时。
没加注解和加了注解在XiamoMiTV
类上时结果是一样的:
为@EqualsAndHashCode(callSuper = false)
时,父类属性中的内容不一样,子类属性中的内容不一样时。
没加注解和加了注解在XiamoMiTV
类上时结果是一样的:
1.3 总结:
@EqualsAndHashCode(callSuper = false)
写不写都存在,
这个默认不会调用父类的属性中的内容用来Equals
判断和HashCode
判断,
所以说只要子类的属性中的内容是一致则为true
,不一致则为false
。
@EqualsAndHashCode(callSuper = true)
,
都会比较父类和子类的属性中内容,相当于就是所有的属性中的内容一致则为true
,不一致则为false
。
callSuper = true的用法思考相关推荐
- @EqualsAndHashCode(callSuper = true/false) 作用
首先 @EqualsAndHashCode 标在子类上 1. callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子类对象比较时,只有子类对象的本 ...
- pythonwhile true循环_python学习-while True的用法
在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法: d = {} #数据库 ...
- python小知识|if x、if not x、while True的用法,还在困扰着你吗?(补加:关于None的小知识)
python小知识|if x.if not x.while True的用法,还在困扰着你吗?(补加:关于None的小知识) 一.条件判断语句简写 1.if x 与 if not x 2.None的小知 ...
- overflowhidden用法思考
今天在群里(54430674)交流高度自适应问题,linxz℡推荐使用: height:auot;min-height:100px !important; 或 height:auto;overfl ...
- python中while true的用法_解析Python中while true的使用
无限循环 如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例: #!/usr/bin/python # -*- coding: UTF-8 -*- var = 1 while var ...
- python中return true的用法_Return True/False何时使用它而不是Return
类比:函数是一个准备好执行任务并给出答案的可克隆助手.任务由函数的参数定义(括号内的内容).让我们重写这些名称以赋予它们语义意义(即说明我们期望的名称).在def isXGreaterThanY(.. ...
- 简单说 !![]==true 与 []==true 引发的思考 1
说明 直接说出问题 !![] == true //结果是true [] == true //结果是false ![] == [] //结果是true 为什么会出现这种情况 解释 首先说一下,如果你看到 ...
- 【工作记录】java方法返回多个值(用法思考、比较)
用java写业务逻辑的时候,有时候一个方法可能需要返回多个出参,当中可能有List,String,Map等不同类型的数据结构,针对这种情况,我的解决策略一般是使用Map的形式来解决,具体分析请浏览下文 ...
- python中return true的用法_python中 return 的用法
return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return. 要返回两个数值,写成一行即可: de ...
最新文章
- 利用Reachability实现网络状态监听
- 京东自动评论脚本_京东时光机python脚本 自动完成任务
- Codeforces Round #709 (Div. 1) C. Skyline Photo dp + 单调栈优化
- python求字符串的所有子集_打印一字符串的所有子集 | 学步园
- jQuery版三级联动案例
- Linux Shell基础 - Shell 脚本的执行方式
- linux usb 同步传输,从设备到主机的用户模式USB等时传输
- 【shell 练习5】编写简单的多级菜单
- 安装ps2021后,解决adobe一直发送消息的办法
- 51单片机之DS18B20
- 中国移动CMPP短信开发平台通讯包 2.8
- 百度小程序如何引流?给用户带来了更便捷、更人性化的体验
- 微信加密某一个人私聊?微信私密聊天
- python字符串这一篇就够了
- Dcat-Admin自定义Excel数据导出
- 经常说的ROI是什么,怎么计算
- 学计算机有什么好处和坏处,学习电脑有什么好处和坏处,电脑好处和坏处有哪些?...
- 算法的时间复杂度(大O表示法)
- Shellcode生成工具Donut测试分析
- 2019年秋季学期实验室安全考试2