Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Wiki Markup
The general usage contract for {{equals()}} as specified by the Java Language Specification \[[JLS 2005|AA. Bibliography#JLS 05]\] says:

  • It is reflexive: For any reference value x, x.equals(x) must return true.
  • It is symmetric: For any reference values x and y, x.equals(y) must return true if and only if y.equals(x) returns true.
  • It is transitive: For any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) must return true.
  • It is consistent: For any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the object is modified.
  • For any non-null reference value x, x.equals(null) must return false.

...

Violating the general contract when overriding the equals() method can lead to unexpected results.

Rule Guideline

Severity

Likelihood

Remediation Cost

Priority

Level

MET12-J

low

unlikely

medium

P2

L3

...