EqualsUsingHashCode
Implementing #equals by just comparing hashCodes is fragile. Hashes collide frequently, and this will lead to false positives in #equals.

Severity
WARNING
Tags
FragileCode
Has Fix?
REQUIRES_HUMAN_ATTENTION

The problem

Don’t implement #equals using just a hashCode comparison:

```java {.bad} class MyClass { private final int a; private final int b; private final String c;

@Override public boolean equals(@Nullable Object o) { return o.hashCode() == hashCode(); }

@Override public int hashCode() { return Objects.hashCode(a, b, c); } ```

The number of Objects with randomly distributed hashCode required to give a 50% chance of collision (and therefore, with this pattern, erroneously correct equality) is only ~77k.

Suppression

Suppress false positives by adding the suppression annotation @SuppressWarnings("EqualsUsingHashCode") to the enclosing element.