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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270494.html

(0)
上一篇 2022年6月27日 11:39
下一篇 2022年6月27日 11:40

相关推荐

发表回复

登录后才能评论