Ich bin mir nicht sicher, ob der folgende Code alle in der Javadoc von Comparator genannten Bedingungen erfüllen würde.
class TotalOrder<T> implements Comparator<T> {
public boolean compare(T o1, T o2) {
if (o1 == o2 || equal(o1, o2)) return 0;
int h1 = System.identityHashCode(o1);
int h2 = System.identityHashCode(o2);
if (h1 != h2) {
return h1 < h2 ? -1 : 1;
}
// equals returned false but identity hash code was same, assume o1 == o2
return 0;
}
boolean equal(Object o1, Object o2) {
return o1 == null ? o2 == null : o1.equals(o2);
}
}
Wird der obige Code allen Instanzen einer beliebigen Klasse eine Gesamtreihenfolge auferlegen, auch wenn diese Klasse Comparable nicht implementiert?