Respostas:
Se você quiser saber se um Classestende outro, use Class # isAssignableFrom (Class) . Para o seu exemplo, seria:
if(B.class.isAssignableFrom(A.class)) { ... }
Se você estiver interessado em saber se uma instância é ou não de um tipo específico, use instanceof:
A obj = new A();
if(obj instanceof B) { ... }
Observe que eles retornarão truese a classe / instância for um membro da hierarquia de tipos e não for restritivo para direcionar os relacionamentos de superclasse / subclasse. Por exemplo:
// 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 você deseja verificar os relacionamentos diretos de superclasse / subclasse, Tim também forneceu uma resposta .
Você quer saber se b é atribuível a partir de a :
b.isAssignableFrom(a);
Além disso, se você quiser saber que aé uma subclasse direta de b:
a.getSuperclass().equals(b);
ae bda questão