Ответ
Классы-обертки (например, Integer, Double, Boolean) предоставляют объектное представление для примитивных типов (int, double, boolean). Они необходимы в контекстах, где требуются объекты.
Основные причины использования:
- Работа с коллекциями и дженериками: Коллекции Framework (
List<T>,Set<T>,Map<K,V>) могут хранить только объекты.List<Integer> list = new ArrayList<>(); list.add(5); // Автоупаковка int -> Integer - Null-значения: Обертка может быть
null, что позволяет отличать отсутствие значения от нулевого (например,Integerможет бытьnull,int— нет). - Утилитные методы: Классы-обертки предоставляют полезные статические методы (парсинг, сравнение, конвертация).
int num = Integer.parseInt("123"); int max = Integer.max(10, 20); - Использование в рефлексии и API, работающих с
Object: Например, при вызове методов через Reflection.
Автоупаковка (Autoboxing) и распаковка (Unboxing) автоматически преобразуют примитивы в обертки и обратно, упрощая код:
Integer boxed = 42; // Autoboxing: int -> Integer
int primitive = boxed; // Unboxing: Integer -> int