IT-словарь › Программирование › Стирание типов

Стирание типов

Программирование Svenska → Обновлено: 2026-10-18

Реализация обобщений, при которой параметры типов удаляются на этапе компиляции. Java 5 (2004) выбрала этот путь ради обратной совместимости с байткодом до дженериков. Следствие: List<String> и List<Integer> во время выполнения — один и тот же тип.

Практические последствия: в Java нельзя написать new T() для параметра обобщения и проверить instanceof List<String>. В Kotlin inline fun <reified T> обходит стирание в отдельных случаях. В TypeScript типы тоже стираются при компиляции в JS, и во время выполнения от них ничего не остаётся.

Противоположный подход — мономорфизация (Rust, C++): для каждого типа генерируется отдельный код, что даёт больше оптимизаций, но раздувает бинарник. Scala 3 и Kotlin пытаются смягчить стирание с помощью информации о типах времени выполнения в отдельных стратегиях.

← Назад к словарю