@EqualsAndHashCode(callSuper = true)啥意思
时间: 2023-11-23 13:57:25 浏览: 114
@EqualsAndHashCode(callSuper = true)是一个注解,用于在Java类中生成equals()和hashCode()方法。当我们在一个子类中使用@Data注解时,如果想要继承父类的equals()和hashCode()方法,就可以使用@EqualsAndHashCode(callSuper = true)注解。
这个注解的作用是告诉编译器在生成equals()和hashCode()方法时,要调用父类的equals()和hashCode()方法。这样可以确保子类对象在比较和哈希计算时,也会考虑到父类的属性。
下面是一个示例代码:
```java
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class ChildClass extends ParentClass {
private String childProperty;
}
@Data
public class ParentClass {
private String parentProperty;
}
public class Main {
public static void main(String[] args) {
ParentClass parent = new ParentClass();
parent.setParentProperty("parent");
ChildClass child1 = new ChildClass();
child1.setParentProperty("parent");
child1.setChildProperty("child");
ChildClass child2 = new ChildClass();
child2.setParentProperty("parent");
child2.setChildProperty("child");
System.out.println(child1.equals(child2)); // 输出:true
System.out.println(child1.hashCode() == child2.hashCode()); // 输出:true
}
}
```
在上面的示例中,ChildClass继承自ParentClass,并使用@Data和@EqualsAndHashCode(callSuper = true)注解。当我们比较两个ChildClass对象时,会同时比较父类的属性。当我们计算两个ChildClass对象的哈希值时,也会考虑到父类的属性。
阅读全文