Un bel grattacapo
Come faccio a sapere se una classe generica K implementerà o meno un'interfaccia?
Mi spiego. Vorrei poter scrivere qualcosa del tipo:
codice:
if ( K implementa Comparable )
fai qualcosa
else
fai qualcos'altro
Ovviamente non funziona "instanceof" perché K non è un riferimento ad un oggetto, ma una classe. Quindi non posso scrivere:
codice:
if K istanceof Comparable
E non funziona nemmeno
codice:
K pippo;
if pippo istanceof Comparable
Perché il compilatore mi dice che pippo potrebbe non essere istanziata(giustamente). E io non posso certo istanziare una classe generica!
Ho trovato il comparatore "isAssignableFrom", ma non riesco a passare la fase di compilazione... Questa è la sua sintassi:
codice:
if ( Nomeclasse.class.isAssignableFrom( obj.getClass() ) )
Come vedete ha sempre bisogno di un oggetto e non lavora su due classi.
Aggiungo che non è il mio caso quello di aggiungere una verifica al momento della dichiarazione della classe, del tipo:
codice:
public class NaturalComparator<K extends Comparable>
Perché non voglio che K implementi necessariamente Comparable. Voglio che il mio programma si comporti in modo diverso a seconda che lo implementi o meno!