Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что такое type erasure?

Вопрос проверяет понимание ключевого механизма, лежащего в основе generics в Java.

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

Type erasure — это механизм удаления информации о generic-типах при компиляции.
После компиляции JVM не знает о параметрах типов.
Generics используются только для проверки типов компилятором.
Это обеспечивает обратную совместимость.
Но накладывает ограничения на использование generics.

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

Type erasure — фундаментальный принцип реализации generics в Java.

Определение

Type erasure — это процесс, при котором компилятор удаляет информацию о параметрах типов, заменяя их на базовые типы.

Как работает стирание

Компилятор:

  • заменяет T на Object или upper bound

  • вставляет необходимые cast-операции

  • удаляет информацию о типах из байткода

Пример:

class Box<T> {
    T value;
}

После компиляции логически превращается в:

class Box {
    Object value;
}

Зачем это сделано

  • обратная совместимость с Java до generics

  • отсутствие изменений в JVM

  • меньшая сложность рантайма

Последствия

  • ограничения instanceof

  • невозможность создавать generic-массивы

  • сложность с сериализацией и reflection

Вывод

Type erasure — это осознанный компромисс, обеспечивший появление generics без изменения JVM.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Java

    Java

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

#type

#erasure

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