0
点赞
收藏
分享

微信扫一扫

callSuper的用法,区别:

柠檬果然酸 2022-01-09 阅读 67

父类:
在这里插入图片描述
子类:
在这里插入图片描述
一般@ToString和@EqualsAndHashCode注解是加在子类上的,其它注解大同小异。

问题:使用继承时  调用@toString方法 默认不会输出父类中的字段。
解决:设置@ToString(callSuper = true),callSuper属性为true  就可以实现toString方法输出父类中继承的属性。
默认有@ToString(callSuper = false),写不写都存在。

在这里插入图片描述

问题:使用继承时  调用@EqualsAndHashCode(callSuper = false)方法,默认不会比较父类属性中的内容和HashCode。
解决:@EqualsAndHashCode(callSuper = false)方法,默认是callSuper = false。
这个@EqualsAndHashCode(callSuper = false)注解写不写都存在。
就是这个默认不会调用父类的属性用来Equals判断和HashCode判断。
所以说只要子类的属性和值是一样的就为true,反正false。设置callSuper = true即可。

@EqualsAndHashCode(callSuper = false),父类和子类属性内容都一样,没加注解和加了注解结果是一样的:
在这里插入图片描述
@EqualsAndHashCode(callSuper = false),父类属性内容都一样,子类属性内容不一样,没加注解和加了注解结果是一样的:
在这里插入图片描述
@EqualsAndHashCode(callSuper = false),父类属性内容不一样,子类属性内容都一样,没加注解和加了注解结果是一样的:
在这里插入图片描述
@EqualsAndHashCode(callSuper = false),父类属性内容不一样,子类属性内容不一样,没加注解和加了注解结果是一样的:
在这里插入图片描述
总结:

所以说加不加注解,会默认存在,但是不会比较父类的属性和内容,只会比较子类的属性和内容,一致为true,不一致为false。
加了@EqualsAndHashCode(callSuper = true)之后,都会比较父类和子类的属性和内容,相当于就是所有一致则为true,不一致则为false。
举报

相关推荐

0 条评论