В объектно-ориентированном программировании класс -обертка — это класс , который инкапсулирует типы , так что эти типы могут использоваться для создания экземпляров объектов и методов в другом классе, которому нужны эти типы. Таким образом, примитивный класс-обертка — это класс-обертка, который инкапсулирует, скрывает или оборачивает типы данных из восьми примитивных типов данных , [1] так что их можно использовать для создания экземпляров объектов с методами в другом классе или в других классах. [2] [3] Примитивные классы-обертки находятся в Java API .
Примитивные классы-оболочки используются для создания Object
, которые должны представлять примитивные типы в Collection
классах (т. е. в Java API), в java.util
пакете и в пакете java.lang.reflect
отражения . Классы коллекций — это классы, определенные Java API, которые могут хранить объекты способом, аналогичным тому, как структуры данных, такие как массивы, хранят примитивные типы данных, такие как int , double , long или char и т. д., [2], но массивы хранят примитивные типы данных, в то время как коллекции фактически хранят объекты.
Примитивные классы-оболочки и соответствующие им примитивные типы:
Примитивные классы-обертки — это не то же самое, что и примитивные типы. В то время как переменные, например, могут быть объявлены в Java как типы данных double , short , int и т. д., примитивные классы-обертки создают инстанцированные объекты и методы, которые наследуют, но скрывают примитивные типы данных, в отличие от переменных, которым присваиваются значения типов данных. [2]
Таким образом, термин Primitive wrapper class не означает, что классы-обертки являются примитивными типами. Его следует понимать как класс, который оборачивает примитивные типы. Классы-обертки могут использоваться для хранения того же значения, что и у переменной примитивного типа, но сами экземпляры/объекты классов-оберток являются Non-Primitive . Мы не можем сказать, что сами классы-обертки являются примитивными типами. Они просто оборачивают примитивные типы.
Классы -оболочки Byte
, Short
, Integer
, , Long
и являются подклассами класса .Float
Double
Number
Классы-обертки BigDecimal
и BigInteger
не являются одними из примитивных классов-оберток, но являются неизменяемыми. [4] [5]
С Java 5.0 в пакет были введены дополнительные классы-обертки java.util.concurrent.atomic
. Эти классы изменяемы и не могут использоваться в качестве замены обычных классов-оберток. Вместо этого они предоставляют атомарные операции для сложения, приращения и присваивания.
Атомарные классы-оболочки и соответствующие им типы:
Классы AtomicInteger
и AtomicLong
являются подклассами класса Number
. AtomicReference
Класс принимает параметр типа V
, который указывает тип ссылки на объект . (См. « Generics in Java » для описания параметров типа в Java).V
Классы java.math.BigInteger и BigDecimal также не являются неизменяемыми, хотя, возможно, они должны были бы быть таковыми.
Неизменяемые целые числа произвольной точности.