Как проверить, a
является ли это подклассом b
?
Class<?> a = A.class;
Class<?> b = B.class;
Как проверить, a
является ли это подклассом b
?
Class<?> a = A.class;
Class<?> b = B.class;
Ты ищешь:
Super.class.isAssignableFrom(Sub.class)
Если вы хотите знать, Class
расширяет ли один другой другой, используйте 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
:Кроме того, если вы хотите знать, что
a
это прямой подклассb
:источник
a
иb
за вопрос