You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Обёртка (тип данных)

Материал из EverybodyWiki Bios & Wiki
Перейти к:навигация, поиск

Ошибка скрипта: Модуля «Unsubst» не существует. 

В объектно-ориентированном программировании обёртка над необъектным типом (boxed type) — объектный тип данных, призванный хранить значение необъектного типа. Например, в Java класс Integer является надстройкой для примитивного типа int.

Для чего?[править]

  • Чтобы работала динамическая идентификация типа. Например, API рефлексии должен вызывать функции с произвольными наборами параметров, а подходит этот параметр или нет — определяется динамически. Точно так же действует java.util.Formatter (аналог printf из Си).
  • Чтобы превратить тип-значение в тип-ссылку (например, для передачи в функцию параметра по ссылке).
  • Как законное место для констант и функций-утилит, связанных с этим типом. Например, в java.lang.Integer есть константы MIN_VALUE и MAX_VALUE; функции, определяющие знак числа, переводящие число в десятичный и шестнадцатеричный вид, и т. д.
  • Чтобы работали шаблоны обобщённого программирования, которые из-за ограничений Java-машины могут работать только с объектными типами. 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;   // ошибка приведения типа

Шаблон:Типы данных


This article "Обёртка (тип данных)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Обёртка (тип данных). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[править]