You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Java record自定义equals和hashCode方法?

解决方案

Java Record 支持手动覆写默认生成的equals()和hashCode()方法,你可以直接在Record结构内部自定义实现逻辑,忽略字段a的完整示例如下:

import java.util.Objects;

record Data(int x, int y, int a) {
    // 自定义equals逻辑,仅比较x、y字段
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Data data = (Data) o;
        return x == data.x && y == data.y;
    }

    // 自定义hashCode逻辑,仅用x、y计算哈希值
    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }
}

注意事项

  • 需保证equals()和hashCode()逻辑对齐:如果两个对象调用equals()返回true,则二者的hashCode返回值必须相等,因此两个方法都要同步排除a字段,不能只修改其中一个
  • 日常开发中可以直接用IDEA、Eclipse等主流IDE的自动生成功能,生成时仅勾选需要参与比对的x、y字段即可,无需手动编码,避免出错

内容的提问来源于stack exchange,提问作者Thirumal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:04