Обобщения используются для более строгих проверок типов во время компиляции и для обеспечения общего программирования. Чтобы реализовать общее поведение, Java-компилятор применяет стирание типа. Стирание типа — это процесс, в котором компилятор заменяет универсальный параметр фактическим методом класса или моста. При стирании типа компилятор гарантирует, что никакие дополнительные классы не создаются и нет никаких накладных расходов времени выполнения.
Замените параметры типа в универсальном типе их границей, если используются параметры ограниченного типа.
Замените параметры типа в универсальном типе на Object, если используются параметры неограниченного типа.
Вставьте слепки типа, чтобы сохранить безопасность типа.
Генерация мостовых методов для сохранения полиморфизма в расширенных универсальных типах.