@EqualsAndHashCode
注解,自动在 bean上生成hashCode和equals方法,
demoTest
@Data
public class Fu {
private String name;
private String code;
public Fu(String name, String code) {
this.name = name;
this.code = code;
}
}
@Data
@EqualsAndHashCode
public class Zi extends Fu {
private String address;
private Integer crd;
// 在子类构造方法中加上父类中的属性
public Zi(String address, Integer crd, String name, String code) {
super(name, code);
this.address = address;
this.crd = crd;
}
}
public class DemoTest {
public static void main(String[] args) {
// 此时子类有父类的属性,测试时设置父类的属性一致
Zi zi1 = new Zi("address", 22, "ll", "ll");
Zi zi2 = new Zi("address", 22, "ww", "ww");
System.out.println("result: " + zi1.equals(zi2));
// @EqualsAndHashCode(callSuper = false),callSuper默认的属性是false
// result: true
// 此时equals不会考虑到父类的情况,只根据子类自己的属性来判断是否相同
// @EqualsAndHashCode(callSuper = true)
// result: false
// callSuper=true时,不仅会判断子类中的属性,还会判断父类属性是否相同
}
}