Risposte:
Se vuoi sapere se un Classaltro 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 truese 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);
ae bdalla domanda