Sobes.tech
Junior

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:

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

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 objektumok null é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);
    }
}