¿Cómo probar si una clase java extiende otra en tiempo de ejecución?
¿Cómo probar si a
es una subclase de b
?
Class<?> a = A.class;
Class<?> b = B.class;
117
3 answers
¿Estás buscando:
Super.class.isAssignableFrom(Sub.class)
219
Author: meriton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-17 16:48:41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-17 16:48:41
Si quieres saber si un Class
extiende a otro, usa Class#IsAssignableFrom(Class). Para su ejemplo, sería:
if(B.class.isAssignableFrom(A.class)) { ... }
Si está interesado en saber si una instancia es de un tipo particular, use instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
Tenga en cuenta que estos devolverán true
si la clase/instancia es un miembro de la jerarquía de tipos y no son restrictivos para dirigir relaciones de superclase/subclase. Por ejemplo:
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
Si desea comprobar si hay relaciones de superclase / subclase, Tim también ha proporcionado una respuesta .
79
Author: Rob Hruska,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:22
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:22
Quieres saber si b
es asignable desde a
:
b.isAssignableFrom(a);
Además, si quieres saber que a
es una subclase directa de b
:
a.getSuperclass().equals(b);
39
Author: Tim Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-17 16:50:03
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-17 16:50:03