Mi az a Wrapper osztályok Java-ban?
sobes.tech MI
Válasz az MI-től
A Java-ban a Wrapper osztályok olyan osztályok, amelyek primitív típusokat objektum-orientált módon képviselnek. Lehetővé teszik primitív értékek használatát olyan kontextusokban, ahol objektumokra van szükség, például gyűjteményekben vagy több szálú környezetben.
Fő Wrapper osztályok:
ByteShortIntegerLongFloatDoubleBooleanCharacter
Használati példák:
Primitív típusok használata:
// Primitív típus
int x = 10;
Wrapper osztály használata:
// Wrapper osztály
Integer y = new Integer(20); // Régi módja a létrehozásnak
Integer z = 30; // Autoboxing (automatikus átalakítás primitívből objektummá)
A primitív típusok és a Wrapper objektumok közötti átalakítás:
- Autoboxing: Automatikus primitív típus átalakítása Wrapper objektummá.
// Autoboxing int primitiveInt = 100; Integer wrapperInt = primitiveInt; - Unboxing: Wrapper objektum automatikus primitív típusra való átalakítása.
// Unboxing Integer wrapperInteger = new Integer(200); int primitiveInteger = wrapperInteger;
A Wrapper osztályok előnyei:
-
Gyűjteményekkel való munka: A gyűjtemények (
List,Set,Map) csak objektumokat tárolnak. -
nullértékkel való munka: A Wrapper objektumoknullértéket is felvehetnek, ellentétben a primitív típusokkal. -
Hasznos metódusokat kínálnak: A Wrapper osztályok metódusokat tartalmaznak a stringek konvertálására, értékek összehasonlítására stb. Például,
Integer.parseInt(String s). -
Generikusokkal való munka: A generikusok csak objektumokat fogadnak el. A Wrapper osztályok hátrányai:
-
Memóriaigény: A Wrapper objektumok több memóriát foglalnak, mint a primitív típusok.
-
Teljesítménycsökkenés: Az automatikus átalakítás (autoboxing és unboxing) kissé csökkentheti a teljesítményt. Példa gyűjteményben való használatra:
import java.util.ArrayList;
import java.util.List;
public class WrapperExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10); // Autoboxing
numbers.add(new Integer(20)); // Objektum explicit létrehozása
int firstNum = numbers.get(0); // Unboxing
System.out.println(firstNum);
}
}