加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

来自多个字段的Java hashCode

发布时间:2020-12-15 00:37:38 所属栏目:Java 来源:网络整理
导读:鉴于这样的一个类: class MyObject { private String id1; private String id2; @Override public boolean equals(Object o) { if (o == this) return true; if (!(o instanceof MyObject)) { return false; } MyObject other = (MyObject) o; return id1.e
鉴于这样的一个类:
class MyObject {
  private String id1;
  private String id2;

  @Override
  public boolean equals(Object o) {
    if (o == this) return true;
    if (!(o instanceof MyObject)) {
        return false;
    }
    MyObject other = (MyObject) o;
    return id1.equals(other.id1) || id2.equals(other.id2);
  }
}

请注意,相等不依赖于两个字段匹配,两个字段都有效.什么是这个类的合适的hashCode实现?

解决方法

这不是equals的有效实现.

具体而言,它违反了及物性要求.

因此,除了使所有实例具有相同的哈希码之外,您也无法“正确”实现hashCode.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读