Klasy osłonowe (ang. Wrapper classes) – klasy osłonowe stanowią swego rodzaju pomost między światem typów prostych, a obiektowych. W niektórych miejscach typy proste lepiej się sprawdzą, a w innych lepiej zdecydować się na odpowiadające im klasy. Dzięki wykorzystaniu klas osłonowych (wrapperów) mamy możliwość łączenia obu podejść.
W tym materiale chcę Ci opowiedzieć o klasach osłonowych. czyli tzw. wrapperach, ich rodzajach oraz sposobach konwertowania.
Spis treści
- 1 Java – Klasy osłonowe – wprowadzenie
- 2 Java – Klasy osłonowe – Wrapper classes
- 3 Java – Typy proste
- 4 Java – Typy obiektowe
- 5 Java – Rodzaje wrapperów
- 6 Autoboxing – Konwersja typu prostego na obiekt
- 7 Unboxing – Konwersja obiektu na typ prosty
- 8 Java – Klasy osłonowe – podsumowanie
- 9 Kierunek Java
- 10 20+ BONUSOWYCH materiałów z programowania
Java – Klasy osłonowe – wprowadzenie
Z tego materiału dowiesz się:
- Czym są klasy osłonowe?
- Jak wykonać konwersję typu prostego na typ osłonowy?
- Jak wykonać konwersję typu obiektowego na typ prosty?
- Jak zamienić wartości typów prostych i osłonowych na string’a?
- Jak zamienić string’a na typ prosty lub osłonowy?
Java – Klasy osłonowe – Wrapper classes
Klasy osłonowe (opakowujące) to połączenie pomiędzy typami prostymi a obiektowymi. Dzięki wykorzystaniu wrapperów możemy np. dodać liczby całkowite (które z założenia są typem prostym) do kolekcji, które dedykowane są obiektom.
Java – Typy proste
W ramach tego materiału zajmiemy się przede wszystkim klasami osłonowymi – natomiast kompletny materiał dotyczący typów prostych znajdziesz poniżej.
➡ ZOBACZ 👉: Typy proste
Java – Typy obiektowe
W ramach tego materiału zajmiemy się przede wszystkim klasami osłonowymi – natomiast kompletny materiał dotyczący typów obiektowych znajdziesz poniżej.
➡ ZOBACZ 👉: Typy obiektowe
Java – Rodzaje wrapperów
Klasy osłonowe powstały dla wszystkich typów prostych:
([klasa osłonowa / wrapper] – [odpowiadający mu typ prosty])
- Boolean – boolean
- Character – char
- Integer – int
- Double – double
- Float – float
- Byte – byte
- Short – short
- Long – long
Autoboxing – Konwersja typu prostego na obiekt
Autoboxing odnosi się do konwersji prymitywnej wartości na obiekt odpowiedniej klasy wrapper. Typy osłonowe mają statyczną metodę: valueOf przyjmującą jako argument dany typ prosty i zwracającą na jego podstawie obiekt klasy osłonowej.
public static Integer valueOf(int i) Integer i = Integer.valueOf(1); // autoboxing Double d = Double.valueOf(1); // autoboxing
Autoboxing może nastąpić również niejawnie np. poprzez przekazanie prymitywnej wartości do metody, która oczekuje obiektu opakowującego lub poprzez przypisanie wartości typu prostego do zmiennej, która oczekuje obiektu.
List<Integer> numbers = new ArrayList<>(); list.add(1); // autoboxing Integer num = 10; // autoboxing
Unboxing – Konwersja obiektu na typ prosty
Unboxing – czyli rozpakowanie typu obiektowego do odpowiadającego mu typu prostego – odnosi się do konwersji obiektu typu wrapper do odpowiadającej mu wartości prymitywnej. Przekonwertowanie obiektów osłonowych do typów prostych możliwe jest przy pomocy metod w formacie:
[nazwa typu]Value() dostępnych dla wszystkich klas osłonowych, np.
public int intValue() Integer i = Integer.valueOf(1); int intValue = i.intValue(); //unboxing Double d = Double.valueOf(1); double doubleValue = d.doubleValue(); //unboxing
Unboxing, podobnie jak autoboxing jest wykonywany automatycznie podczas przekazywania obiektu do metody, która oczekuje prymitywu lub podczas przypisywania go do zmiennej prymitywnej.
Integer num = new Integer(10); int primitiveNum = sum(num, num); //unboxing int primitiveNum2 = num; //unboxing public int sum(int num1, int num2) { return num+num2; }
Parsowanie String’a na typ prosty
Oprócz możliwości konwersji typów prostych na typy osłonowe, klasy wrapperów udostępniają różne metody pozwalające na konwersje typu prostego lub osłonowego na Stringa’a i na odwrót.
Do zamiany stringów na typy proste przygotowano metody w formacie:
parse[nazwa typu](). W ich przypadku należy jednak uważać na możliwość pojawienia się wyjątku NumberFormatException, jeżeli podanego ciągu znaków nie da się zamienić na wybrany typ.
public static int parseInt(String s) throws NumberFormatException double parseDouble = Double.parseDouble("1"); int parseInt = Integer.parseInt("1");
Parsowanie String’a na typ obiektowy
Do zamiany stringów bezpośrednio na typ obiektowy można wykorzystać statyczną metodę: valueOf na danym typie. Tu również należy uważać na wyjątek: NumberFormatException.
public static Double valueOf(String s) throws NumberFormatException Double d = Double.valueOf("1"); Integer i = Integer.valueOf("1");
Zamiana typu prostego na String’a
Do zamiany typów prostych na string’a przygotowano statyczną metodę: toString.
public static String toString(double d) String doubleString = Double.toString(1.0); String integerString = Integer.toString(1);
Java – Klasy osłonowe – podsumowanie
W ramach tego materiału dowiedzieliśmy się, czym są klasy osłonowe. Bliżej zapoznaliśmy się konwersjami typu prostego na osłonowy i na odwrót. Jeżeli chcesz kontynuować swoją przygodę z Javą i poznać inne struktury, które oferuję ten język programowania – to zapraszam do kolejnego tematu z serii o Javie. Przedstawię Ci temat operatorów matematycznych.
➡ ZOBACZ 👉: Operatory matematyczne
Kierunek Java
W serii o Javie zapoznajesz się z podstawowymi tematami o Javie. Jeżeli chcesz bardziej kompleksowo zagłębić się w temat Javy, poczytać, posłuchać o Javie, to zachęcam Cię do zapoznania się z moim kursem „Kierunek Java”:
➡ ZOBACZ 👉: Kierunek Java
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!