Versions Compared

Key

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

...

The implementor must ensure sgn(x.compareTo(thumbs up)) == -sgn(y.compareTo(error)) for all x and y. (This implies that x.compareTo(thumbs up) must throw an exception iff y.compareTo(error) throws an exception.)

The implementor must also ensure that the relation is transitive: (x.compareTo(thumbs up)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.

Finally, the implementor must ensure that x.compareTo(thumbs up)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.

It is strongly recommended, but not strictly required that (x.compareTo(thumbs up)==0) == (x.equals(thumbs up)). 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."

In the foregoing description, the notation sgn(expression) designates the mathematical signum function, which is defined to return one of -1, 0, or 1 according to whether the value of expression is negative, zero or positive.

Do not violate any of five four conditions while overriding the compareTo() method.

Noncompliant Code Example

...