Как проверить, является ли подкласс экземпляром класса во времени выполнения? [дубликат]

68
задан BartoszKP 11 April 2015 в 20:56
поделиться

6 ответов

Вы должны внимательно прочитать API для этих методов. Иногда можно очень легко запутаться.

Это либо:

if (B.class.isInstance(view))

API говорит: Определяет, совместим ли указанный объект (параметр) с объектом, представленным этим классом (объект класса, у которого вы вызываете метод)

или:

if (B.class.isAssignableFrom(view.getClass()))

API говорит: Определяет, является ли класс или интерфейс, представленный этим объектом Class, тем же самым, или суперклассом, или суперинтерфейсом класса или интерфейса, представленного указанным параметром Class

или (без отражения и рекомендуемого):

if (view instanceof B)
155
ответ дан 24 November 2019 в 14:04
поделиться
if(view instanceof B)

Это вернет истину, если представление является экземпляром B или подклассом A (или любым подклассом B в этом отношении).

24
ответ дан 24 November 2019 в 14:04
поделиться

Может, я что-то упускаю, но этого недостаточно:

if (view instanceof B) {
    // this view is an instance of B
}
10
ответ дан 24 November 2019 в 14:04
поделиться

Все наоборот : B.class.isInstance (просмотр)

2
ответ дан 24 November 2019 в 14:04
поделиться

Class.isAssignableFrom () - также работает для интерфейсов. Если вы этого не хотите, вам придется вызвать getSuperclass () и тестировать, пока не дойдете до Object .

6
ответ дан 24 November 2019 в 14:04
поделиться

Я никогда не использовал это, но попробуйте view.getClass (). GetGenericSuperclass ()

-1
ответ дан 24 November 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: