Sobes.tech
Back to questions
Junior — Middle
53

Существуют ли ограничения по использованию базовых типов в обобщенных типах (Generics)?

Companies where asked
Драйв Клик

Answer from AI

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 и т.п.).