Hashcode desde múltiples campos

mkohram:

Dada una clase de esta manera:

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);
  }
}

Aviso de que la igualdad no depende tanto de los campos de coincidencia, o bien los trabajos de campo. Lo que sería una adecuada hashCodeimplementación de esta clase?

Andy Turner:

Esto no es una aplicación válida de equals.

En concreto, se viola el requisito de transitividad.

Como tal, no se puede poner en práctica hashCode"correcta" o bien, aparte de hacer todas las instancias tienen el mismo código hash.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=167553&siteId=1
Recomendado
Clasificación