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