Объектные оболочки и автоупаковка Java

Объектные оболочки и автоупаковка JavaИногда приходится преобразовывать переменные простых типов вроде int в объекты. Все простые типы имеют аналоги в виде классов. Например, существует класс Integer, соответствующий типу int. Такие классы принято называть объектными оболочками(object wrapper). Они имеют очевидные имена: Integer, Long, Float, Double, Short, Byte, Character, Void и Boolean. Первые шесть классов имеют общий суперкласс Number. Классы-оболочки являются финальными. Таким образом, вы не можете, например, переопределить метод toString() в классе Integer, чтобы отобразить число римскими цифрами. Кроме того, изменить значение, хранящееся в объекте интерфейсного класса, также невозможно.Предположим, мы хотим, чтобы в списочном массиве хранились целые числа. К сожалению, с помощью параметра в угловых скобках невозможно задать простой тип, например, выражение ArrayList<int> недопустимо. Здесь приходит на помощь класс-оболочку. Можно объявить списочный массив, предназначенный для хранения объектов Integer:

При использовании объекта ArrayList<Integer> производительность становится меньше, чем при работе с массивом int[]. Причина очевидна: каждое значение инкапсулировано внутри объекта, и для его записи или извлечения необходимо предпринимать дополнительные действия. Таким образом, использование классов-оболочек оправдано в небольших наборах данных, когда удобство работы программиста важнее эффективности работы программы.

С появлением Java SE 5.0 стало проще добавлять элементы в массив и извлекать их. Рассмотрим следующую строку кода:

Она автоматически преобразуется в выражение:

Подобное автоматическое преобразование называется автоупаковкой(autoboxing).

В противоположном случае, если вы присвоите объект Integer переменной int, целочисленное значение будет автоматически извлечено из объекта, т.е. распаковано(unboxed). Другими словами, компилятор преобразует строку кода:

в выражение:

Не знаете как навестить порядок в вашем коттедже? Советуем вам заказать услугу уборка коттеджа на сайте bleck.kiev.ua. Все по самым выгодным ценам.