Come verificare se una classe java estende un altro in fase di esecuzione?
-
29-09-2019 - |
Domanda
Come test ho se a
è una sottoclasse di b
?
Class<?> a = A.class;
Class<?> b = B.class;
Soluzione
Sei alla ricerca di:
Super.class.isAssignableFrom(Sub.class)
Altri suggerimenti
Se vuoi sapere se un Se siete interessati a se un'istanza è di un tipo particolare, l'uso Si noti che questi torneranno Se si desidera verificare la presenza di rapporti diretti superclasse / sottoclasse, Tim ha fornito una risposta pure. Class
estende un altro, l'uso
if(B.class.isAssignableFrom(A.class)) { ... }
instanceof
: A obj = new A();
if(obj instanceof B) { ... }
true
se la classe / istanza è un membro della gerarchia tipo e non sono restrittive per dirigere superclasse / sottoclasse relazioni. Ad esempio: // 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 vuole sapere se b
è assegnabile dal a
:
b.isAssignableFrom(a);
Inoltre, se si vuole sapere che a
è una sottoclasse diretta di b
:
a.getSuperclass().equals(b);