В компьютерной науке, тип объекта (так называемый оберточной объект) является типом данных , который используется в объектно-ориентированном программирования, чтобы обернуть тип не-объект , чтобы сделать его похожим динамический объект.
Некоторые объектно-ориентированное программирование языков делают различие между референтных и ценностных типов, часто называются объектами и не объекты на платформах, где сложные типы значений не существует, по таким причинам, как выполнения эффективность и синтаксис или семантические проблемы. Например, Java имеет примитивные обертки классов , соответствующие каждому из примитивного типа: Integer и Int, характер и полукокса, Float и поплавок и т.д. Языки, как C++ имеют мало или вообще не понятие ссылочного типа; таким образом, использование типа объекта представляет большой интерес.
Бокса это процесс размещения примитивного типа внутри объекта, так , что примитив может быть использован в качестве эталонного объекта . Например, списки могут иметь определенные методы, которые могут быть массивы , но в этом списке также может быть , чтобы все его члены были динамическими объектами. В этом случае добавленная функциональность списка может быть недоступна для простого массива номеров . Для более конкретного примера, в Java, LinkedList может изменить свой размер , но массив должен иметь фиксированный размер . Можно было бы использовать LinkedList для int , но класс LinkedList перечисляет только ссылки на динамические объекты - он не может отображать примитивные типы , которые являются типами значений.
Чтобы обойти это, Интс может быть штучной упаковке в целые числа, которые являются динамическими объектами , а затем добавляют к LinkedList целых чисел. (Использование родовых параметризованных типов, введенных в J2SE 5.0, этот тип представлен в виде LinkedList.) С другой стороны, C# не имеют примитивную обертки классов, но позволяет бокс любого типа значения, возвращая родовой объект ссылки.
Объект в коробке всегда является копией объекта ценности и обычно является неизменяемым. При распаковке объекта также возвращает копию сохраненного значения. Обратите внимание, что повторил бокс и распаковку объектов может иметь серьезные последствия производительности, так как динамически выделяет новые объекты и затем делает их право на Garbage коллекции.
«Проблема с примитивными типами (по крайней мере, до Java 5)» ... и более поздними версиями. Несмотря на то, что в настоящее время существует авто-бокс, до сих пор нет базового класса для примитивных типов. –