Ответ
Классы-обёртки (Integer, Double, Boolean и др.) используются для представления примитивных типов данных как объектов. Основные сценарии применения:
1. Хранение в коллекциях и использование с Generics
Коллекции и обобщённые типы (List<T>, Map<K,V>) работают только с объектами.
List<Integer> numbers = new ArrayList<>();
numbers.add(42); // Автоупаковка int -> Integer
2. Возможность использования null
Обёртки могут иметь значение null, что полезно для представления отсутствующего значения.
Integer result = findValue(); // Может вернуть null
if (result != null) {
int value = result; // Автораспаковка
}
3. Использование утилитных методов Каждый класс-обёртка предоставляет полезные статические методы.
int num = Integer.parseInt("100");
String hex = Integer.toHexString(255); // "ff"
int max = Integer.MAX_VALUE;
4. Работа с рефлексией и аннотациями Эти механизмы часто требуют объектных типов.
5. Синхронизация (редко) — объекты можно использовать в качестве мониторов.
Автоупаковка (autoboxing) и автораспаковка (unboxing) автоматически преобразуют примитивы в обёртки и обратно, начиная с Java 5.