La combinazione dei due approcci nelle collezioni di java.util
alcuni dei tipi polimorfi lì definiti usano insieme le due interfacce
public interface Comparator {
public int compare (Object x, Object y) throws ClassCastException, NullPointerException;
// EFFECTS: se x o y è null, lancia NullPointerException;
// se x e y non sono confrontabili, solleva ClassCastException;
// altrimenti, se x è minore di y ritorna -1;
// se x = y ritorna 0; se x è maggiore di y, ritorna 1
public interface Comparable {
public int compareTo (Object x) throws ClassCastException, NullPointerException;}