Назад к вопросам
Junior — Middle
54
Существуют ли ограничения по использованию базовых типов в обобщенных типах (Generics)?
Компании, где спрашивали
Драйв Клик
Ответ от нейросети
sobes.tech AI
В Java обобщения (Generics) работают только с ссылочными типами (reference types), а не с примитивными (int, boolean, double и т.п.). Это связано с тем, что во время компиляции происходит стирание типов (type erasure), и информация о конкретном типе не сохраняется в байт-коде.
Поэтому нельзя напрямую использовать примитивные типы в качестве параметров обобщений. Вместо этого применяются их обёртки (wrapper classes), например:
- int → Integer
- boolean → Boolean
- double → Double
Пример:
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
Если нужно работать с примитивами, можно использовать специализированные коллекции из библиотек (например, Trove, FastUtil) или потоки примитивов (IntStream и т.п.).