¿Cómo tener un equals/hashCode personalizado para registros?
Tengo un registro como este:
java
record Data(int x, int y, int a) {}
Este registro viene con métodos equals y hashCode predeterminados.
¿Cómo puedo ajustar esos métodos para tener un comportamiento personalizado? Digamos que quiero ignorar “a” en los métodos.
davy.ai
Puede anular los métodos
equals
yhashCode
para personalizar su comportamiento. Por ejemplo, puede crear un nuevo métodoequals
que ignore el campoa
:java
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Data)) {
return false;
}
Data data = (Data) o;
return data.x == x && data.y == y;
}
De manera similar, puede crear un nuevo método
hashCode
que ignore el campoa
:java
@Override
public int hashCode() {
int result = 17;
result = 31 * result + x;
result = 31 * result + y;
return result;
}