Как проверить, если один класс java расширяет другой во время выполнения?

Как проверить, является ли a подкласс b?

Class<?> a = A.class;
Class<?> b = B.class;

Ответ 1

Вы ищете:

Super.class.isAssignableFrom(Sub.class)

Ответ 2

Если вы хотите узнать, продолжит ли расширение Class другой, используйте класС# isAssignableFrom (класс). Для вашего примера это будет:

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

Если вы хотите проверить прямые отношения суперкласса/подкласса, Тим также предоставил ответ.

Ответ 3

Вы хотите знать, можно ли b от a:

b.isAssignableFrom(a);

Кроме того, если вы хотите знать, что a является прямым подклассом b:

a.getSuperclass().equals(b);