Я знаю, что такое класс-оболочка, они переносят примитивные типы (например, int, double и т.д.) на объекты своего класса.
Но зачем нам, во-первых, нужны классы Wrapper? Почему бы просто не перейти с примитивными типами, где они есть у нас?
Я знаю, что такое класс-оболочка, они переносят примитивные типы (например, int, double и т.д.) на объекты своего класса.
Но зачем нам, во-первых, нужны классы Wrapper? Почему бы просто не перейти с примитивными типами, где они есть у нас?
Несколько возможных причин:
В качестве примера, когда используются обертки, вы должны иметь ArrayList<Integer>
, но не ArrayList<int>
то же самое с HashMap
и т.д. Чтобы получить безопасность типов, мы используем generics, а generics - объекты, а не примитивы.
Java - это объектно-ориентированный язык программирования. Я думаю, вы могли бы спросить - почему у нас есть примитивы и почему все это не просто объект?
Java-дизайнеры сохранили два отдельных, чтобы все было просто. Вы используете обертки, когда вам нужны типы, которые вписываются в объектно-ориентированный мир - как полиморфизм, коллекции и т.д. Вы используете примитивы, когда вам нужна эффективность.
Классы Wrapper используются вместо примитивных типов, когда ожидается объект.
В коллекциях, например, ArrayList может содержать экземпляры любого подкласса Object, но поскольку примитивные типы не являются объектами, они не могут содержаться в ArrayList.
Классы Wrapper используются для преобразования любого примитивного типа в объект. Примитивные типы данных не являются объектами, они не принадлежат ни одному классу, они определены в самом языке. При хранении в структурах данных, которые поддерживают только объекты, требуется сначала преобразовать примитивный тип в объект, поэтому мы перейдем к классу-оболочке.
Java использует примитивные типы, такие как int, char, double, чтобы удерживать основные типы данных, поддерживаемые языком.
Иногда требуется создать объектное представление этих примитивные типы.
Это классы коллекции, которые имеют дело только с такими объектами. Один необходимо обернуть примитивный тип в класс.
Чтобы удовлетворить эту потребность, java предоставляет классы, соответствующие каждому из примитивных типов. В принципе, эти классы инкапсулируют или обертывают примитивные типы внутри класса.
Таким образом, их обычно называют оберткой типа. Типовая обертка являются классами, которые инкапсулируют примитивный тип внутри объекта.
Типы обертки - это Byte, Short, Integer, Long, Character, Boolean, Double, Float.
Java - это объектно-ориентированный язык, и, как сказано в java, объект. Но как насчет примитивов? Они как бы ушли в мир объектов, то есть они не могут участвовать в объекте действия, такие как возврат из метода в качестве объекта, и добавляется в коллекцию объектов и т.д. В качестве решения этого проблема, Java позволяет включать примитивы в семейство объектов, используя так называемые классы-оболочки.
Есть три причины, по которым вы можете использовать объект Number, а не примитив:
Источник из:
Одна прагматическая причина с моей головы заключается в том, что объекты могут быть пустыми, примитивы не могут *. Если я не могу гарантировать, что функция может вернуть int, использование обертки - единственный способ справиться с получением int, который я ожидаю. Автобоксинг заботится обо всем остальном.