
Czym jest autoboxing oraz unboxing w Javie?
W Javie możemy korzystać z następujących prymitywnych typów danych:
- int;
- float;
- double;
- boolean;
- char;
- short;
- byte;
- long;
Każdy z tych typów ma swój odpowiednik, który jest obiektem – są to tak zwane typy osłonowe. Klasa Integer jest typem osłonowym dla int, Double dla double, Boolean dla boolean itd.
Każdy z prymitów możemy bez problemu przypisać do typu osłonowego – pomimo tego, że przypisujemy liczbę do instancji obiektu. Takie zjawisko można zauważyć np.:
public class Main { public static void main(String[] args) { Integer number = 1; Float f = 1.4f; Boolean t = true; } }
Powyższe zjawisko nazywamy autoboxing, czyli Java automatycznie opakowuje liczbę prymitywną w typ osłonowy.
Poniżej możemy zauważyć odwrotne zjawisko – czyli przypisanie typu osłonowego do prymitywnego:
public class Main { public static void main(String[] args) { Integer number = 1; Float f = 1.4f; Boolean t = true; int x = number; float a = Float.valueOf(1.5); } }
Powyższe zjawisko nazywamy unboxing – czyli Java automatycznie wyciąga wartość z typu osłonowego oraz przypisuję ją do typu prymitywnego.
Czy powinniśmy korzystać z automatycznej konwersja typów prymitywnych do osłonowych i vice-versa?
W skrócie – tak, jednak nie powinniśmy robić tego w zbyt dużej ilości, ponieważ operacja autoboxingu i unboxingu może spowolnić działanie aplikacji.
Wykorzystanie typów osłonowych może powodować również wiele innych problemów, jednak to już temat na inne pytanie.
Podsumowując używaj typów osłonowych tylko w przypadku, gdy jest to konieczne.
Krótko i na temat 🙂 Blog wygląda ciekawie, na pewno przejrzę więcej artykułów.