Мне кажется, что я получил некоторое представление об классах обертки. Мой вопрос в том, когда метод ожидает объект? только тогда нам нужно использовать классы-оболочки правильно? , как правило, метод ожидает некоторых параметров, таких как int add (int a); Является ли это «int a» примитивным значением? пример PlsСомнение в классе Wrapper
ответ
Java primitive types являются int
, double
, byte
, boolean
, char
, short
, long
и float
.
Если подпись функции требует int
, то вы передаете ей примитив. Если, например, он хотел Integer
, ему нужен класс-обертка Integer
. В Java 1.5 autoboxing может вступить в силу и автоматически обернуть примитивы в свой тип оболочки. Unboxing также может иметь место, где класс-оболочка преобразуется в его примитивный эквивалент для методов, которые ожидают примитивов.
class Example
{
public static void usePrimitiveInt(int i) { }
public static void useIntegerClass(Integer i) { }
public static void main(String [] args)
{
int i = 5;
Integer iObj = 10;
Example.usePrimitiveInt(i); // use primitive
Example.useIntegerClass(i); // autobox int to Integer
Example.usePrimitiveInt(iObj); // unbox iObj into primitive
}
}
Вы сказали, что понимаете классы обертки. Тогда нечего объяснять. Метод ожидает класс-оболочку, когда подпись метода говорит об этом. Если тип параметра равен Integer
, метод ожидает класс оболочки. Если int
, он ожидает примитивное значение.
Помните, что другое название шаблона обертки - это шаблон adapter.
Одним из первых примеров узора обертки, которые мы видим в Java примитивные классы обертки:
- java.lang.Integer оборачивает INT
- java.lang.Character оборачивает CHAR
- Java. lang.Long обертывания длинные
- т.д.
Эти упаковщики полезны, когда вам нужно представления примитивов объекта, например, когда вам нужно хранить их в Coll прогиб.
Wrappers могут быть полезны, когда вам нужно нормализовать общий интерфейс для разных классов, особенно тех, которые вы не можете изменить, потому что, например, они могут быть частью сторонней библиотеки.
Например, вам нужно обработать список людей, которые будут посещать мероприятие, однако у вас могут быть несколько источников информации с их собственными представлениями человека.
- Ваш метод обработки принимает список объектов
Attendee
. - Первый источник дает вам список
Employee
объектов
2.1EmployeeWrapper
содержатEmployee
объекта и инвентарь или расширяютAttendee
- Второй источник дает вам список объекты Заказчика
3.1CustomerWrapper
содержитCustomer
объекта и орудия или расширяетAttendee
- Третий список дает вам список
VendorContact
объектов
4.1VendorWrapper
содержитVendorContact
объекта и орудия или расширяетAttendee
Теперь у вас нормированный представление различных типов объектов Attendee
.
Возможный дубликат [Объект или примитивный тип] (http://stackoverflow.com/questions/2879916/object-or-primitive-type) –