@EqualsAndHashCode(callSuper = true)
时间: 2023-10-14 22:09:18 浏览: 82
这是一个 Java 注解,用于在生成 equals() 和 hashCode() 方法时调用父类的相应方法。通过设置 `callSuper` 参数为 true,可以确保在比较对象时也比较了父类的字段,避免出现比较不准确的情况。例如:
```
public class Child extends Parent {
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Child)) return false;
if (!super.equals(o)) return false; // 调用父类的 equals() 方法比较父类字段
Child child = (Child) o;
return age == child.age && Objects.equals(name, child.name);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), name, age); // 调用父类的 hashCode() 方法计算父类字段的 hash 值
}
}
```
注意,为了正确比较父类字段,需要调用父类的 equals() 和 hashCode() 方法。在这个例子中,我们使用了 `super.equals(o)` 和 `super.hashCode()` 来调用父类的方法。同时,由于 `@EqualsAndHashCode` 注解是 Lombok 提供的,使用时需要引入 Lombok 的依赖并在项目中配置相应的插件。
阅读全文