@EqualsAndHashCode(callSuper = true)的作用
@EqualsAndHashCode(callSuper = true)
是一个Java注解,通常用于在子类中自动生成 equals
和 hashCode
方法,同时考虑到了父类的成员变量。
具体来说,当你在子类中使用 @EqualsAndHashCode(callSuper = true)
时,它会在生成 equals
和 hashCode
方法时考虑到父类的成员变量。如果没有这个参数,只会考虑子类自己的成员变量。
举个例子,假设有一个父类 Person
和一个子类 Student
,Student
继承自 Person
,并且你在 Student
类上使用了 @EqualsAndHashCode(callSuper = true)
。
import lombok.EqualsAndHashCode;
class Person {
private String name;
private int age;
}
@EqualsAndHashCode(callSuper = true)
class Student extends Person {
private int studentId;
}
如果你使用了 @EqualsAndHashCode(callSuper = true)
,那么在生成 equals
和 hashCode
方法时,会考虑到 Person
类中的 name
和 age
字段。
如果没有使用 callSuper = true
,那么在生成 equals
和 hashCode
方法时,只会考虑 Student
类中的 studentId
字段。
这个注解通常与一些Java库(如Lombok)一起使用,以简化代码,同时确保正确生成 equals
和 hashCode
方法,从而保证在集合类(如HashSet,HashMap等)中正确地工作。