V tomto výukovém programu se na příkladech seznámíme s automatickým boxem a unboxingem Java.
Java Autoboxing - primitivní typ k obalovému objektu
V autoboxingu kompilátor Java automaticky převede primitivní typy na jejich odpovídající objekty třídy obalů. Například,
int a = 56; // autoboxing Integer aObj = a;
Autoboxing má velkou výhodu při práci s kolekcemi Java.
Příklad 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); ) )
Výstup
ArrayList: (5, 6)
Ve výše uvedeném příkladu jsme vytvořili seznam polí typu Integer. Seznam matic tedy může obsahovat pouze objekty Integer
typu.
Všimněte si řádku,
list.add(5);
Tady předáváme hodnotu primitivního typu. Kvůli autoboxingu se však primitivní hodnota automaticky převede na Integer
objekt a uloží se do seznamu polí.
Java Unboxing - zabalení objektů do primitivních typů
V unboxingu kompilátor Java automaticky převede objekty třídy wrapper na odpovídající primitivní typy. Například,
// autoboxing Integer aObj = 56; // unboxing int a = aObj;
Stejně jako autoboxing , rozbalení lze použít také s kolekcí Java.
Příklad 2: Java Unboxing
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); ) )
Výstup
ArrayList: (5, 6) Hodnota v indexu 0: 5
Ve výše uvedeném příkladu si všimněte řádku,
int a = list.get(0);
Zde get()
metoda vrací objekt na index 0. Kvůli rozbalení je však objekt automaticky převeden na primitivní typ int
a přiřazen k proměnné a.