Respostas:
Se você quiser saber se um Class
estende 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 true
se 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);
a
e b
da questão