Probabilmente è stato chiesto prima, ma una ricerca rapida ha richiamato solo la stessa domanda per C#. See here.Verifica se l'interfaccia degli oggetti implementa
Quello che sostanzialmente voglio fare è controllare se un dato oggetto implementa una determinata interfaccia.
Ho trovato una soluzione, ma questo non è abbastanza comodo per usarlo spesso nelle istruzioni if o case e mi chiedevo se Java non avesse una soluzione integrata.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
EDIT: Ok, grazie per le vostre risposte. Soprattutto con Damien Pollet e Noldorin, mi hai fatto ripensare al mio design in modo da non provare più le interfacce.
Non puoi semplicemente cercare di casting e intercettare l'eccezione, se si è gettato (o verificare la presenza di un risultato nullo, anche se Java ha qualcosa di analogo al C# "come" operatore)? Sono un programmatore C# piuttosto che uno Java, quindi principalmente indovinerei qui, anche se penserei che un simile approccio sarebbe possibile in qualsiasi linguaggio OO. – Noldorin
yay! prego :) –
L'eccezione di lancio è una buona pratica in questo caso solo se non ti devi preoccupare delle prestazioni. – Rafa