来自多个字段的Java hashCode

前端之家收集整理的这篇文章主要介绍了来自多个字段的Java hashCode前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
鉴于这样的一个类:
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.

猜你在找的Java相关文章