Risposte:
Se vuoi sapere se un Class
altro ne estende un altro, usa Class # isAssignableFrom (Class) . Per il tuo esempio, sarebbe:
if(B.class.isAssignableFrom(A.class)) { ... }
Se sei interessato a sapere se un'istanza è o meno di un tipo particolare, usa instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
Si noti che verranno restituiti true
se la classe / istanza è un membro della gerarchia dei tipi e non è restrittiva per dirigere le relazioni superclasse / sottoclasse. Per 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
Se vuoi controllare le relazioni dirette tra superclasse / sottoclasse, anche Tim ha fornito una risposta .
Vuoi sapere se b
è assegnabile da a
:
b.isAssignableFrom(a);
Inoltre, se vuoi sapere che a
è una sottoclasse diretta di b
:
a.getSuperclass().equals(b);
a
e b
dalla domanda