EqualsAndHashCodecallSuper = false解析
@EqualsAndHashCode(callSuper = false) 是用于在 Java 类中生成 equals() 和 hashCode() 方法的注解。它的参数 callSuper 是一个布尔值,用于指定是否调用父类的 equals() 和 hashCode() 方法。
当 callSuper 参数设置为 false 时,生成的 equals() 和 hashCode() 方法只会比较当前类的字段,不包括父类的字段。这意味着,如果父类的字段对于对象的相等性判断和哈希码计算是重要的,那么设置 callSuper 为 false 可能会导致不正确的结果。
示例:
@EqualsAndHashCode(callSuper = false)
public class ChildClass extends ParentClass {
private int childField;
// 省略构造方法、getter 和 setter 方法
// 只比较 ChildClass 的字段
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ChildClass that = (ChildClass) o;
return childField == that.childField;
}
// 只计算 ChildClass 的哈希码
@Override
public int hashCode() {
return Objects.hash(childField);
}
}
在上面的例子中,ChildClass 类使用 @EqualsAndHashCode(callSuper = false) 注解,表示生成的 equals() 和 hashCode() 方法只会比较和计算 ChildClass 的字段和哈希码,不包括父类的字段和哈希码
原文地址: http://www.cveoy.top/t/topic/iYVW 著作权归作者所有。请勿转载和采集!