Обложка канала

Библиотека Java разработчика

9291 @BookJava

Библиотека Java разработчика. Книги по программированию на Java.

Библиотека Java разработчика

4 года назад
Открыть в
Что такое Type Erasure? Компилятор удаляет из байткода класс-файла информацию о типах-дженериках. Этот процесс и называется стирание типов (type erasure). Он появился в Java 5 вместе с самими дженериками. Такое решение позволило сохранить обратную совместимость без перекомпилляции кода Java 4. Стирание состоит из трех действий: 🔘 Если параметры ограничены (bounded), вместо типа-параметра в местах использования подставляется верхняя граница, иначе Object; 🔘 В местах присвоения значения типа-параметра в переменную обычного типа добавляется каст к этому типу; 🔘 Генерируются bridge-методы. Подробнее о границах дженериков и bridge-методах поговорим в следующих постах. Информация о типах стирается только из методов и полей, но остается в метаинформации самого класса. Получить эту информацию в рантайме можно с помощью рефлекшна, методом Field#getGenericType. Тип со стертой информацией о дженериках называется «Non-reifiable». Стирание типов позволяет не создавать при применении дженериков новые классы, в отличие от, например, шаблонов C++. #Дженерики