Відповіді:
Якщо ви хочете знати, 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
питання