Co jsou to třídy obalů (Wrapper třídy) v Javě?
sobes.tech AI
Odpověď od AI
Třídy wrapper v Javě jsou třídy, které poskytují objektově orientované zobrazení primitivních datových typů. Umožňují používat primitivní hodnoty v kontextech, kde jsou požadovány objekty, například v kolekcích nebo při práci s více vlákny.
Hlavní třídy wrapper:
ByteShortIntegerLongFloatDoubleBooleanCharacter
Příklady použití:
Použití primitivního typu:
// Primitivní typ
int x = 10;
Použití wrapper třídy:
// Wrapper třída
Integer y = new Integer(20); // Zastaralý způsob tvorby
Integer z = 30; // Autoboxing (automatická konverze primitivu na objekt)
Konverze mezi primitivy a wrapper objekty:
- Autoboxing: Automatická konverze primitivu na wrapper objekt.
// Autoboxing int primitiveInt = 100; Integer wrapperInt = primitiveInt; - Unboxing: Automatická konverze wrapper objektu na primitiv.
// Unboxing Integer wrapperInteger = new Integer(200); int primitiveInteger = wrapperInteger;
Výhody wrapper tříd:
-
Práce s kolekcemi: Kolekce (
List,Set,Map) ukládají pouze objekty. -
Práce s
null: Wrapper objekty mohou mít hodnotunull, na rozdíl od primitivů. -
Poskytují užitečné metody: Wrapper třídy mají metody pro převod řetězců, porovnání hodnot atd. Například
Integer.parseInt(String s). -
Práce s generiky: Generiky fungují pouze s objekty. Nevýhody wrapper tříd:
-
Paměťová náročnost: Wrapper objekty zabírají více paměti než primitivní typy.
-
Snížení výkonu: Automatická konverze (autoboxing a unboxing) může mírně snížit výkon. Příklad použití v kolekci:
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)); // Explicitní vytvoření objektu
int firstNum = numbers.get(0); // Unboxing
System.out.println(firstNum);
}
}