...
The implementor must ensure sgn(x.compareTo) == -sgn(y.compareTo)
for all x and y. (This implies that x.compareTo
must throw an exception iff y.compareTo
throws an exception.)
The implementor must also ensure that the relation is transitive: (x.compareTo>0 && y.compareTo(z)>0)
implies x.compareTo(z)>0
.
Finally, the implementor must ensure that x.compareTo==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==0) == (x.equals)
. 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
...