== Why is this an issue? According to the Java ``++Comparable.compareTo(T o)++`` documentation: ____ It is strongly recommended, but not strictly required that ``++(x.compareTo(y)==0) == (x.equals(y))++``. Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals." ____ If this rule is violated, weird and unpredictable failures can occur. For example, in Java 5 the ``++PriorityQueue.remove()++`` method relied on ``++compareTo()++``, but since Java 6 it has relied on ``++equals()++``. === Noncompliant code example [source,java] ---- public class Foo implements Comparable { @Override public int compareTo(Foo foo) { /* ... */ } // Noncompliant as the equals(Object obj) method is not overridden } ---- === Compliant solution [source,java] ---- public class Foo implements Comparable { @Override public int compareTo(Foo foo) { /* ... */ } // Compliant @Override public boolean equals(Object obj) { /* ... */ } } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Override "equals(Object obj)" to comply with the contract of the "compareTo(T o)" method ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]