Подтвердить что ты не робот

Почему в Java существуют классы-оболочки?

Я знаю, что такое класс-оболочка, они переносят примитивные типы (например, int, double и т.д.) на объекты своего класса.

Но зачем нам, во-первых, нужны классы Wrapper? Почему бы просто не перейти с примитивными типами, где они есть у нас?

4b9b3361

Ответ 1

Несколько возможных причин:

  • Так что возможно нулевое значение
  • Чтобы включить в коллекцию
  • Чтобы обрабатывать в целом/полиморфно как объект вместе с другими объектами

Ответ 2

В качестве примера, когда используются обертки, вы должны иметь ArrayList<Integer>, но не ArrayList<int> то же самое с HashMap и т.д. Чтобы получить безопасность типов, мы используем generics, а generics - объекты, а не примитивы.

Ответ 3

Java - это объектно-ориентированный язык программирования. Я думаю, вы могли бы спросить - почему у нас есть примитивы и почему все это не просто объект?

Java-дизайнеры сохранили два отдельных, чтобы все было просто. Вы используете обертки, когда вам нужны типы, которые вписываются в объектно-ориентированный мир - как полиморфизм, коллекции и т.д. Вы используете примитивы, когда вам нужна эффективность.

Ответ 4

Классы Wrapper используются вместо примитивных типов, когда ожидается объект.

В коллекциях, например, ArrayList может содержать экземпляры любого подкласса Object, но поскольку примитивные типы не являются объектами, они не могут содержаться в ArrayList.

Ответ 5

Классы Wrapper используются для преобразования любого примитивного типа в объект. Примитивные типы данных не являются объектами, они не принадлежат ни одному классу, они определены в самом языке. При хранении в структурах данных, которые поддерживают только объекты, требуется сначала преобразовать примитивный тип в объект, поэтому мы перейдем к классу-оболочке.

Ответ 6

Класс Wrapper:

  • Java использует примитивные типы, такие как int, char, double, чтобы удерживать основные типы данных, поддерживаемые языком.

  • Иногда требуется создать объектное представление этих примитивные типы.

  • Это классы коллекции, которые имеют дело только с такими объектами. Один необходимо обернуть примитивный тип в класс.

  • Чтобы удовлетворить эту потребность, java предоставляет классы, соответствующие каждому из примитивных типов. В принципе, эти классы инкапсулируют или обертывают примитивные типы внутри класса.

  • Таким образом, их обычно называют оберткой типа. Типовая обертка  являются классами, которые инкапсулируют примитивный тип внутри объекта.

  • Типы обертки - это Byte, Short, Integer, Long, Character, Boolean, Double, Float.

Ответ 7

Java - это объектно-ориентированный язык, и, как сказано в java, объект. Но как насчет примитивов? Они как бы ушли в мир объектов, то есть они не могут участвовать в объекте действия, такие как возврат из метода в качестве объекта, и добавляется в коллекцию объектов и т.д. В качестве решения этого проблема, Java позволяет включать примитивы в семейство объектов, используя так называемые классы-оболочки.

Ответ 8

Есть три причины, по которым вы можете использовать объект Number, а не примитив:

  • В качестве аргумента метода, который ожидает объект (часто используется, когда манипулируя наборами чисел).
  • Чтобы использовать константы, определенные классом, такие как MIN_VALUE и MAX_VALUE, которые обеспечивают верхнюю и нижнюю границы типа данных.
  • Использовать методы класса для преобразования значений в и из других примитивных типов, для преобразования в строки и из строк и для преобразование между числовыми системами (десятичное, восьмеричное, шестнадцатеричное, двоичный).

Источник из:

Числа классов

Ответ 9

Одна прагматическая причина с моей головы заключается в том, что объекты могут быть пустыми, примитивы не могут *. Если я не могу гарантировать, что функция может вернуть int, использование обертки - единственный способ справиться с получением int, который я ожидаю. Автобоксинг заботится обо всем остальном.