lombok——@EqualsAndHashCode(callSuper = true)注解的和exclude使用
作者:互联网
- 此注解会生成equals(Object other) 和 hashCode()方法。
- 它默认使用非静态,非瞬态的属性
- 可通过参数exclude排除一些属性
- 可通过参数of指定仅使用哪些属性
- 它默认仅使用该类中定义的属性且不调用父类的方法
实现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