0
点赞
收藏
分享

微信扫一扫

callSuper = true的用法思考

you的日常 2022-05-02 阅读 77

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

举报

相关推荐

0 条评论