❓ Что такое type erasure и какие ограничения он накладывает на дженерики?
generics дают типобезопасность на этапе компиляции, но в рантайме информация о типовых параметрах стирается: List<String> превращается в обычный List, а компилятор сам вставляет приведения типов. Сделано ради обратной совместимости со старым кодом.
Из-за стирания нельзя:
→ создать new T() или new T[];
→ использовать instanceof List<String>;
→ иметь статические поля типа T;
→ объявить два метода, отличающиеся только параметром типа (после стирания их сигнатуры совпадут).
Частичная информация о дженериках сохраняется в сигнатурах полей и методов и доступна через рефлексию, но не на уровне конкретных экземпляров.
🐸 Библиотека собеса по Java
#core
Post #1359
1.17K
- 👍 6
- 🔥 1
- 👏 1