EqualsAndHashCode(callSuper = true)
时间: 2023-12-26 13:27:05 浏览: 72
java中lombok的@Data引发问题详解
5星 · 资源好评率100%
`@EqualsAndHashCode(callSuper = true)`是一个Lombok注解,用于在子类中生成`equals()`和`hashCode()`方法。当`callSuper`设置为`true`时,它会在生成的方法中包含父类的字段。这意味着,当两个子类对象比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,`equals()`方法的返回值是`true`。如果`callSuper`设置为`false`,则只会使用子类自身的字段值来生成`equals()`和`hashCode()`方法,这意味着当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,`equals()`方法的返回值是`true`。
下面是一个使用`@EqualsAndHashCode(callSuper = true)`的例子:
```java
class Animal {
private String name;
private int age;
}
@EqualsAndHashCode(callSuper = true)
class Dog extends Animal {
private String breed;
}
@EqualsAndHashCode(callSuper = true)
class Cat extends Animal {
private String color;
}
```
在这个例子中,`Dog`和`Cat`类都继承了`Animal`类,并使用`@EqualsAndHashCode(callSuper = true)`注解来生成`equals()`和`hashCode()`方法。这意味着当两个`Dog`对象或两个`Cat`对象比较时,只有它们自己的字段值和继承自`Animal`类的字段值都相同,`equals()`方法的返回值才是`true`。
阅读全文