30-04-2023
В объектно-ориентированном программировании обёртка над необъектным типом (boxed type) — объектный тип данных, призванный хранить значение необъектного типа. Например, в Java класс Integer
является надстройкой для примитивного типа int
.
java.util.Formatter
(аналог printf
из Си).java.lang.Integer
есть константы MIN_VALUE
и MAX_VALUE
; функции, определяющие знак числа, переводящие число в десятичный и шестнадцатеричный вид, и т. д.ArrayList<int>
писать нельзя, а ArrayList<Integer>
— можно.Во многих языках обёртки включены в синтаксис языка. Тогда, если функции требуется Integer
или Object
, она автоматически «завернёт» число в тип-обёртку. Например, в Java код
void someFunc(Object x) {} someFunc(4);
эквивалентен коду
someFunc(Integer.valueOf(4));
Это и есть автоооборачивание. Аналогично, авторазворачивание действует в коде
int x = 1 + Integer.valueOf(2);
Здесь тип Integer
разворачивается обратно в int
.
И в Java, и в C# Object
не разворачивается обратно в int
: так, следующий код приведёт к ошибке
Object x = Integer.valueOf(2); int y = x; // ошибка приведения типа
Типы данных | |
---|---|
Неинтерпретируемые | |
Числовые | |
Текстовые | |
Ссылочные |
Адрес • Ссылка • Ссылка в С++ • Указатель • Обёртка |
Композитные |
Алгебраический тип данных (обобщённый) • Массив • Ассоциативный массив • Класс • Список • Кортеж • Объект • Структура • Множество • Объединение (меченое) |
Другие |
Логический • Низший • Высший • Перечисляемый • Коллекция • Исключение • Функциональный • Род (Метакласс) • Монада • Семафор • Поток • Void |
Связанные темы |
Обёртка (тип данных).