В информатике тип объекта (также известный как объект-оболочка) - это тип данных, который используется в объектно-ориентированном программировании для обертывания не-объектного типа, чтобы он выглядел как динамический объект.
Некоторые объектно-ориентированные языки программирования делают различие между ссылочными типами и типами значений, часто называемыми объектами и не-объектами на платформах, где не существуют сложные типы значений, по таким причинам, как эффективность времени выполнения и синтаксические или семантические проблемы. Например, в Java есть классы-оболочки-примитивы, соответствующие каждому примитивному типу: Integer и int, Character и char, Float и float и т. Д. Такие языки, как C ++, практически не имеют понятия ссылочного типа; таким образом, использование типа объекта не представляет особого интереса.
Упаковка - это процесс помещения примитивного типа в объект, чтобы этот примитив можно было использовать в качестве ссылочного объекта. Например, списки могут иметь определенные методы, а массивы могут не иметь, но для списка также может потребоваться что все его члены являются динамическими объектами. В этом случае добавленная функциональность списка может быть недоступна для простого массива чисел. В качестве более конкретного примера в Java LinkedList может изменять свой размер, но массив должен иметь фиксированный размер. Кто-то может пожелать иметь LinkedList целых чисел, но класс LinkedList перечисляет только ссылки на динамические объекты - он не может перечислять примитивные типы, которые являются типами значений.
Чтобы обойти это, целые числа можно объединить в целые числа, которые являются динамическими объектами, а затем добавить в связанный список целых чисел. (Используя универсальные параметризованные типы, представленные в J2SE 5.0, этот тип представлен как LinkedList.) С другой стороны, C # не имеет примитивных классов-оболочек, но позволяет упаковывать любой тип значения, возвращая общую ссылку на объект.
Упакованный объект всегда является копией объекта значения и обычно неизменяем. Распаковка объекта также возвращает копию сохраненного значения. Обратите внимание, что повторная упаковка и распаковка объектов может серьезно повлиять на производительность, поскольку она динамически выделяет новые объекты, а затем делает их доступными для сборки мусора.