Questo viene implementato come segue (jdk1.6.0_31):Java: sull'implementazione Collezioni ReverseComparator
private static class ReverseComparator<T>
implements Comparator<Comparable<Object>>, Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 7207038068494060240L;
public int compare(Comparable<Object> c1, Comparable<Object> c2) {
return c2.compareTo(c1);
}
private Object readResolve() { return reverseOrder(); }
}
Perché non può invece calcolato come segue:
private static class ReverseComparator<T extends Comparable<T>>
implements Comparator<T>, Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 7207038068494060240L;
public int compare(T c1, T c2){
return c2.compareTo(c1);
}
...
}
è solo stile o c'è qualche ragione più profonda?
EDIT: il codice sorgente è mostrata da Sun/Oracle JDK ((jdk1.6.0_31)).
Da dove viene esattamente questo codice? Non lo trovo in JDK, ma ci sono un sacco di altri posti. Nessuno finora ha nemmeno usato i generici. –
L'ho trovato in jdk1.6.0_31, src.zip. – shrini1000
Ma puoi dirmi esattamente dove? Dentro quale classe? –