这是天真的等于,哈希码可以吗?
  我有一个表示具有唯一Id属性的DB-Entries的类。  只有基于这个属性才能实现equals()和hashcode()方法 
  @Override public int hashCode()
  { return id;
  }
  @Override public boolean equals(Object obj)
  {
    if (this == obj)                  return true;
    if (obj == null)                  return false;
    if (getClass() != obj.getClass()) return false;
    Task other = (Task) obj;
    if (id != other.id)
      return false;
    return true;
  }
一般来说,是的。 如果所有ID都是连续的小整数,则可以通过使用在整个可用32位中更广泛地分布位的函数从大集合中获得更好的性能。 但是,这应该找到其他方式。
我没有看到这个代码有什么问题。 但是,您可能想要思考一些问题:
id吗? 使用id建立平等的问题是您可能想要将尚未分配id的对象与具有id的对象进行比较。 在那种情况下,equals和hashCode方法必须使用使对象唯一的业务字段(“业务键”)。
NPE表示,还要比较类而不是使用instanceof规则。
这个代码是可以忍受的,这不是我喜欢的做事方式。 对于简单的情况它是过度的,由Object定义的hashCode和equals方法将完成工作。 对于更高级的领域模型来说,这是不够的,因为业务关键字的子类化和比较实际上是有用的。
链接地址: http://www.djcxy.com/p/12399.html