Классы-оболочки

Объектно-ориентированный подход к описанию коллекций дает нам ряд преимуществ. В частности, возможность помещать в коллекции объекты любых классов. Но при этом простые типы данных оказываются обделенными. Мы не можем создать коллекцию целых чисел int или символов char.

Для того, чтобы работать с простыми типами данных как с объектами (и, в частности, применять их в коллекциях), используются так называемые классы-оболочки (wrappers). Класс-оболочка построен по очень простому принципу: он хранит внутри себя поле простого типа и предоставляет несколько операций для доступа к этому полю.

В стандартной библиотеке Java определены восемь классов-оболочек – по одному на каждый простой тип. Их названия совпадают с названиями этих типов, но начинаются с заглавной буквы. То есть, это Byte, Short, Long, Float, Double, Char, Boolean. Исключение – класс-оболочка для целых чисел, который называется Integer. Каждый класс имеет простой конструктор, принимающий величину соответствующего типа.

Integer i = new Integer(15);

Boolean b = new Boolean(false);

При необходимости легко можно получить «содержимое» класса с помощью одного из его методов. Автоматического приведения к простому типу не происходит. Так что, если нам надо передать в какой-то метод параметр типа int, а нужное нам число представляет собой объект класса Integer, надо осуществить явное преобразование:

String s;

сhar ch = s.charAt(i.intValue);

Зато легко теперь добавлять объекты простых типов в любую коллекцию. Например:

Vector vect = new Vector();

vect.add(b);

vect.add(new Double(3.14));

Класс Vector в последних версиях Java позволяет передавать в метод и примитивные типы данных, автоматически создавая для них оболочку.