Відповіді:
Якщо ви хочете знати, Classрозширює чи інше розширення, використовуйте клас # isAssignableFrom (Class) . Для вашого прикладу це:
if(B.class.isAssignableFrom(A.class)) { ... }
Якщо вас цікавить, чи є екземпляр певного типу, використовуйте instanceof:
A obj = new A();
if(obj instanceof B) { ... }
Зауважте, що вони повернуться, trueякщо клас / екземпляр є членом ієрархії типів і не обмежують прямі співвідношення надкласу / підкласу. Наприклад:
// 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
Якщо ви хочете перевірити наявність прямих взаємозв'язків надкласових класів / підкласів, Тім також надав відповідь .
Ви хочете дізнатися, чи b можна віднести a :
b.isAssignableFrom(a);
Крім того, якщо ви хочете знати, що aце прямий підклас b:
a.getSuperclass().equals(b);
aта bпитання