Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: generics, type, erasure

Сохраняется ли информация о generic-типах во время выполнения?

Вопрос проверяет понимание механизма generics и ограничений Java на этапе runtime.

Короткий ответ

Нет, информация о generic-типах в основном не сохраняется во время выполнения.
Во время компиляции происходит стирание типов.
В runtime JVM работает с «сырыми» типами.
Некоторая информация может быть доступна через reflection.
Это накладывает ограничения на использование generics.

Длинный ответ

Поведение generics в Java определяется компромиссами дизайна языка.

Определение

Generics — это механизм параметризации типов, работающий в основном на этапе компиляции.

Что происходит при компиляции

Компилятор:

  • проверяет типобезопасность

  • удаляет информацию о параметрах типов

  • заменяет generics на базовые типы

Пример:

List<String> list = new ArrayList<>();

В runtime это выглядит как:

List list = new ArrayList();

Что остаётся доступным

Частично информация может быть получена:

  • из сигнатур полей

  • из параметров методов

  • через ParameterizedType

Но:

  • для объектов информация о типе параметра недоступна

Ограничения

  • нельзя создать new T()

  • нельзя сделать instanceof List<String>

  • нельзя создать массив generic-типа

Вывод

Generics в Java — это механизм compile-time типобезопасности, а не runtime-полиморфизма.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#generics

#type

#erasure

Подпишись на Java Developer в телеграм