Обертки (Wrapper классы) используются для следующих целей:
- Преобразование примитивных типов в объекты: В Java и других языках, где есть примитивные типы данных (int, boolean, float и др.) и объекты, обертки позволяют работать с примитивами как с объектами. Это необходимо, например, для использования их в коллекциях (List, Map), которые хранят только объекты.
- Предоставление дополнительных методов: Классы-обертки часто предоставляют полезные методы для работы с соответствующими примитивными типами. Например,
Integer имеет методы для парсинга строк в числа, преобразования в различные системы счисления и т.д.
- Обработка
null значений: Объекты-обертки могут хранить null, что невозможно для примитивных типов. Это важно при работе с базами данных или внешними источниками данных, где поля могут быть пустыми.
- Дженерики: При работе с дженериками (например,
List<Integer>, Map<String, Boolean>) требуется использовать классы, а не примитивные типы. Обертки позволяют использовать параметризованные типы с примитивными значениями.
- Автоупаковка и автораспаковка (Autoboxing/Unboxing): В Java существует механизм автоматического преобразования между примитивными типами и соответствующими им классами-обертками, что упрощает написание кода.
java
- Создание неизменяемых объектов: Обертки часто используются для создания неизменяемых представлений примитивных типов. Например, объекты класса
String или классы-обертки для примитивов являются неизменяемыми.
- Использование в потоках ввода/вывода: Некоторые потоки ввода/вывода (например,
ObjectOutputStream) работают только с объектами, что требует использования оберток для записи примитивных данных.