Автоупаковка и распаковка появилась еще в Java 5. Они представляют собой удобный способ для автоматического преобразования примитивных типов данных в классы-оболочки Java и наоборот.
Автоупаковка в Java
Преобразование примитивного типа данных в объект соответствующего класса-оболочки называется автоупаковкой. Например, преобразование int в Integer или преобразования long в Long-объект.
Компилятор Java применяет автоупаковку при таких значениях примитива:
- Примитив пришел в параметр метода, который ожидает объект соответствующего класса-оболочки. Например, в метод с параметром Integer можно передавать int — компилятор Java будет преобразовывать int в Integer.
- Присваивание переменной значение соответствующего класса-оболочки. Например, переменная типа Long может принимать long.
Распаковка в Java
Присваивание объекта класса-оболочки переменной примитивного типа. Например, переменная типа long может принимать Long.
Компилятор Java применяет распаковку в таком случае:
- Объект класса-оболочки пришел в параметр метода, который ожидает значение соответствующего примитивного типа.
- Присваивание переменной примитивного типа соответствующего объекта класса-оболочки.
Вот небольшой Java программа, показывающая примеры автоупаковки и распаковки в Java.
AutoboxingUnboxing.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//пакет package ua.com.prologistic.autounbox; import java.util.ArrayList; import java.util.List; public class AutoboxingUnboxing { public static void main(String[] args) { int i = 5; long j = 105L; //пришел int, значит будет преобразование в объект Integer doSomething(i); List<Long> list = new ArrayList<>(); //автоупаковка примитивного типа в соответствующий класс-оболочку list.add(j); } private static void doSomething(Integer in){ //распаковка, во время выполнения Integer.intValue() int j = in; //распаковка: передается Integer, где ожидался int doPrimitive(in); } private static void doPrimitive(int i) { } } |
Следите за обновлениями на prologistic.com.ua