Java Core middle
Что такое type erasure?
Ответ
Стирание дженериков во время компиляции. Последствия: нельзя new T(), нельзя instanceof T, нельзя создать массив T[].
Разбор: Type erasure — это стирание параметров типа на этапе компиляции: List<String> и List<Integer> в рантайме являются одним типом List, а параметр заменяется на свою верхнюю границу (Object по умолчанию, но Number для <T extends Number>). Отсюда запреты на new T(), instanceof T и new T[]. Ловушка дистракторов: Java не делает специализацию как C++ templates, и стирание происходит при компиляции, а не при загрузке класса.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.