J'essaie d'utiliser la réflexion pour déterminer si une classe transcédée implémente un est la meilleure / la plus efficace de déterminer cela? Je vois aussi un ISWDIDGET code> interface:
iswidget.class.isAssignAindfrom (Class >) Code> Méthode ... P> P>
4 Réponses :
1) Cela ne fait aucun sens essayez-le avec n'importe quelle classe p> vous obtiendrez p> true
J'utiliserais le pour citer le javadoc ci-dessus: P> détermine si la classe ou l'interface représentée par cet objet de classe
est la même chose que, soit une superclasse ou une superinterface de, la
Classe ou interface représentée par le paramètre de classe spécifié. P>
blockQuote> p> iSAssignAdFrom code>
méthode pour déterminer si iswidget code> est un superinterface:
Si cela fonctionne, ça devrait aller bien. Vous pouvez également essayer d'appeler la méthode code> Cast Code> de la classe CODE> Classe CODE> ESSAYEZ et CATCHEZ. P>
Cela fonctionne, mais cela abuse vraiment du point d'utiliser un bloc d'essai / prise. De plus, l'exception lancée rendra l'appel plus cher qu'il ne doit être (bien que je ne sois pas sûr à quel point il serait plus efficace d'utiliser la réflexion pour déterminer l'interface de mise en œuvre)
Vous pouvez utiliser la méthode La méthode getinterfaces vous donne un Array de getinterfaces () code> si vous avez un objet code> class code>.
classe code> représentant les interfaces
code>. Ou vous pouvez également utiliser la méthode ISAssignAdFrom comme suit: P>
IsWidget.class.isAssignableFrom(clzz);
Cela déterminera si CLZZ code> est une superclasse de
iswidget code>; C'est en arrière.
@RGETTMAN: corrigé. Merci de notifier. :)