В този урок ще научим за автобоксирането и разопаковането на Java с помощта на примери.
Java Autoboxing - примитивен тип за обект на обвивка
В автобоксирането компилаторът Java автоматично преобразува примитивни типове в съответните им обекти от клас обвивка. Например,
int a = 56; // autoboxing Integer aObj = a;
Автобоксът има голямо предимство при работа с Java колекции.
Пример 1: Java Autoboxing
import java.util.ArrayList; class Main ( public static void main(String() args) ( ArrayList list = new ArrayList(); //autoboxing list.add(5); list.add(6); System.out.println("ArrayList: " + list); ) )
Изход
ArrayList: (5, 6)
В горния пример създадохме списък с масиви от тип Integer. Следователно списъкът с масиви може да съдържа само обекти от Integer
тип.
Забележете линията,
list.add(5);
Тук предаваме примитивна стойност на типа. Поради автобоксирането обаче примитивната стойност автоматично се преобразува в Integer
обект и се съхранява в списъка с масиви.
Разпаковане на Java - Wrapper обекти към примитивни типове
При разопаковане Java компилаторът автоматично преобразува обектите от клас обвивка в съответните им примитивни типове. Например,
// autoboxing Integer aObj = 56; // unboxing int a = aObj;
Подобно autoboxing , Unboxing може да се използва с Java колекции.
Пример 2: Разпаковане на Java
import java.util.ArrayList; class Main ( public static void main(String() args) ( ArrayList list = new ArrayList(); //autoboxing list.add(5); list.add(6); System.out.println("ArrayList: " + list); // unboxing int a = list.get(0); System.out.println("Value at index 0: " + a); ) )
Изход
ArrayList: (5, 6) Стойност при индекс 0: 5
В горния пример обърнете внимание на реда,
int a = list.get(0);
Тук get()
методът връща обекта с индекс 0. Въпреки това, поради деблокиране , обектът автоматично се преобразува в примитивен тип int
и се присвоява на променливата a.