其他分享
首页 > 其他分享> > lombok——@EqualsAndHashCode(callSuper = true)注解的和exclude使用

lombok——@EqualsAndHashCode(callSuper = true)注解的和exclude使用

作者:互联网

实现equals, hashCode方法是在编程生活中再常见不过的一个东西了,那么自然@EqualsAndHashCode 这个annotation就成为了一个非常方便的工具。默认情况下,被这个annotation标注的class会用到除了 static,transient修饰的所有属性作为判断标准,当然和之前的annotation一样,可是使用exclude选项除掉不想要的属性。也可以通过callSuper包含父类的equals 和 hashCode。 当然如果你的class 没有继承任何其他的class,你却写了callSuper,那么会收获一个编译报错。

@EqualsAndHashCode(callSuper = true)
该注解用于子类对象之间进行比较的时候

不加该注解的影响:子类对象属性值一致,但其继承的父类对象属性值不一致,在比较的时候会出现比较结果不对的情况。
1.
假如父类有个code属性 子类有个name属性
然后创建两个子类对象 子类的name值都一样 code值不一样
此时两个子类equals 则返回的是true

2.如果父类加上了@EqualsAndHashCode(callSuper = true)
假如父类有个code属性 子类有个name属性
然后创建两个子类对象 子类的name值都一样 code值不一样
此时两个子类equals 则返回的是false

标签:EqualsAndHashCode,callSuper,code,子类,equals,exclude,父类,属性
来源: https://www.cnblogs.com/zh76412950/p/16415443.html