Вы должны внимательно прочитать API для этих методов. Иногда можно очень легко запутаться.
Это либо:
if (B.class.isInstance(view))
API говорит: Определяет, совместим ли указанный объект (параметр) с объектом, представленным этим классом (объект класса, у которого вы вызываете метод)
или:
if (B.class.isAssignableFrom(view.getClass()))
API говорит: Определяет, является ли класс или интерфейс, представленный этим объектом Class, тем же самым, или суперклассом, или суперинтерфейсом класса или интерфейса, представленного указанным параметром Class
или (без отражения и рекомендуемого):
if (view instanceof B)
if(view instanceof B)
Это вернет истину, если представление является экземпляром B или подклассом A (или любым подклассом B в этом отношении).
Может, я что-то упускаю, но этого недостаточно:
if (view instanceof B) {
// this view is an instance of B
}
Class.isAssignableFrom ()
- также работает для интерфейсов. Если вы этого не хотите, вам придется вызвать getSuperclass ()
и тестировать, пока не дойдете до Object
.
Я никогда не использовал это, но попробуйте view.getClass (). GetGenericSuperclass ()