Выбор ответа Junior Дженерики и стирание обновлено

instanceof с дженериком

Вопрос

Что из этого скомпилируется?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: obj instanceof List<? В рантайме параметр стёрт, проверить List<String нельзя, а List<? можно: это проверка «это вообще List».

Варианты ответа

  1. obj instanceof List<String> для Object obj
  2. obj instanceof List<?>правильный ответ
  3. new ArrayList<String>[10]
  4. T.class внутри дженерик-метода

Разбор

В рантайме параметр стёрт, проверить List<String> нельзя, а List<?> можно: это проверка «это вообще List». Массивы параметризованных типов создавать нельзя (массив хранит тип элемента в рантайме, а он стёрт). T.class не существует по той же причине.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.