2010-10-22 3 views
0

Мне кажется, что я получил некоторое представление об классах обертки. Мой вопрос в том, когда метод ожидает объект? только тогда нам нужно использовать классы-оболочки правильно? , как правило, метод ожидает некоторых параметров, таких как int add (int a); Является ли это «int a» примитивным значением? пример PlsСомнение в классе Wrapper

+0

Возможный дубликат [Объект или примитивный тип] (http://stackoverflow.com/questions/2879916/object-or-primitive-type) –

ответ

3

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 
    } 
} 
0

Вы сказали, что понимаете классы обертки. Тогда нечего объяснять. Метод ожидает класс-оболочку, когда подпись метода говорит об этом. Если тип параметра равен Integer, метод ожидает класс оболочки. Если int, он ожидает примитивное значение.

0

Помните, что другое название шаблона обертки - это шаблон adapter.
Одним из первых примеров узора обертки, которые мы видим в Java примитивные классы обертки:

  • java.lang.Integer оборачивает INT
  • java.lang.Character оборачивает CHAR
  • Java. lang.Long обертывания длинные
  • т.д.

Эти упаковщики полезны, когда вам нужно представления примитивов объекта, например, когда вам нужно хранить их в Coll прогиб.
Wrappers могут быть полезны, когда вам нужно нормализовать общий интерфейс для разных классов, особенно тех, которые вы не можете изменить, потому что, например, они могут быть частью сторонней библиотеки.

Например, вам нужно обработать список людей, которые будут посещать мероприятие, однако у вас могут быть несколько источников информации с их собственными представлениями человека.

  1. Ваш метод обработки принимает список объектов Attendee.
  2. Первый источник дает вам список Employee объектов
    2.1 EmployeeWrapper содержат Employee объекта и инвентарь или расширяют Attendee
  3. Второй источник дает вам список объекты Заказчика
    3.1 CustomerWrapper содержит Customer объекта и орудия или расширяет Attendee
  4. Третий список дает вам список VendorContact объектов
    4.1 VendorWrapper содержит VendorContact объекта и орудия или расширяет Attendee

Теперь у вас нормированный представление различных типов объектов Attendee.