interfaces implementaciones implementacion herencia ejemplos ejemplo clase abstracta java reflection

implementaciones - Determinar si una clase implementa una interfaz en Java



java implementaciones (4)

Debe usar isAssignableFrom :

if (YourInterface.class.isAssignableFrom(clazz)) { ... }

Tengo un objeto Class . Quiero determinar si el tipo que representa el objeto Class implementa una interfaz específica. Me preguntaba cómo se podría lograr esto?

tengo el siguiente código. Básicamente, lo que hace es obtener una matriz de todas las clases en un paquete específico. Luego quiero ir a través de la matriz y agregar los objetos de Clase que implementan una interfaz a mi mapa. El problema es que isInstance() toma un objeto como parámetro. No puedo crear una instancia de una interfaz. Así que estoy algo perdido con esto. ¿Algunas ideas?

Class[] classes = ClassUtils.getClasses(handlersPackage); for(Class clazz : classes) { if(clazz.isInstance(/*Some object*/)) //Need something in this if statement { retVal.put(clazz.getSimpleName(), clazz); } }


Puede usar class.getInterfaces() y luego verificar para ver si la clase de interfaz está ahí.

Class someInterface; // the interface you want to check for Class x; // Class[] interfaces = x.getInterfaces(); for (Class i : interfaces) { if (i.toString().equals(someInterface.toString()) { // if this is true, the class implements the interface you''re looking for } }


También puede configurar la instancia agregando ".class"

Class[] classes = ClassUtils.getClasses(handlersPackage); for(Class clazz : classes) { if(Interface.class.isAssignableFrom(clazz)) { retVal.put(clazz.getSimpleName(), clazz); } }


puede usar la función siguiente para obtener todas las interfaces implementadas

Class[] intfs = clazz.getInterfaces();