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
。