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

В Java обобщения (Generics) работают только с ссылочными типами (reference types), а не с примитивными (int, boolean, double и т.п.).

Короткий ответ

Что ответить на собеседовании

В Java обобщения (Generics) работают только с ссылочными типами (reference types), а не с примитивными (int, boolean, double и т.п.). Это связано с тем, что во время компиляции происходит стирание типов (type erasure), и информация о конкретном типе не сохраняется в байт-коде.

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее