@EqualsAndHashCode(callSuper = true) 的 callSuper = true 是什么意思
时间: 2023-10-26 19:59:02 浏览: 103
在Lombok库的@EqualsAndHashCode注解中,callSuper参数用于指定是否调用父类的equals()和hashCode()方法。当设置callSuper为true时,生成的equals()和hashCode()方法会自动调用父类的对应方法。
通常情况下,equals()和hashCode()方法应该同时考虑父类和子类的属性。然而,默认情况下,Lombok只会生成当前类的属性的equals()和hashCode()方法。如果你希望在子类中使用Lombok生成的equals()和hashCode()方法时,同时调用父类的equals()和hashCode()方法,就需要设置callSuper参数为true。
示例代码如下:
```java
@EqualsAndHashCode(callSuper = true)
public class Child extends Parent {
private int childProperty;
// 构造器、getter和setter方法
// 可以使用Lombok生成的equals()和hashCode()方法,会自动调用父类的equals()和hashCode()方法
}
```
在上面的示例中,Child类使用了@EqualsAndHashCode(callSuper = true)注解,这意味着生成的equals()和hashCode()方法会自动调用父类的equals()和hashCode()方法,以考虑父类属性的相等性。
通过设置callSuper参数为true,你可以确保在使用Lombok生成的equals()和hashCode()方法时,同时考虑了父类和子类的属性。
阅读全文