Oggi ho parlato con il professore. E' logicamente scorretto il programma, ma non è mio l'errore. E' del libro di testa (e stiamo parlando di Dati e Algoritmi di Goodrich Tamassia - una bibbia)
Posto il codice per curiosità, così capisci a cosa mi serve:public class GenClass<K> implements Comparator<K> { .... }
allora K è una type variable e sarebbe tecnicamente corretto. Cosa te ne faresti di una classe del genere .... non lo so. E non so dove/come intendi usare K all'interno di GenClass.
Ovviamente perché questo codice sia corretto il tipo generico K deve implementare comparable. Io ci impongo un cast ma il compilatore (giustamente) mi dà un warning.codice:protected static class NaturalComparator<K> implements Comparator<K> { public int compare(K key1, K key2) { return ( (Comparable<K>) key1).compareTo(key2); } }
La creazione di un comparatore generico di default (che funziona quindi come un adattatore, facendo fare il lavoro a compareTo) non è una soluzione elegante se non si conosce la natura degli elementi (in questo caso chiavi) da comparare.

Rispondi quotando