Sobes.tech
Junior

Kas yra Wrapper klasės Java?

sobes.tech AI

Atsakymas iš AI

„Java“ wrappers klasės yra klasės, kurios suteikia objektinį primitivių duomenų tipų vaizdą. Jos leidžia naudoti primitivių reikšmes kontekstuose, kur reikalingi objektai, pavyzdžiui, kolekcijose ar daugiagijame programavime.

Pagrindinės wrappers klasės:

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

Naudojimo pavyzdžiai:

Primitivių naudojimas:

// Primitivus tipas
int x = 10;

Wrappers klasės naudojimas:

// Wrappers klasė
Integer y = new Integer(20); // Pasenęs būdas
Integer z = 30; // Automatinis pakuotės (primitivų automatinis konvertavimas į objektą)

Tarp primitivių ir wrappers objektų vykdomi konvertavimai:

  • Autoboxing: automatinis primityvo konvertavimas į wrappers objektą.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: wrappers objekto automatinis konvertavimas į primityvą.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Wrappers klasės privalumai:

  • Darbas su kolekcijomis: kolekcijos (List, Set, Map) saugo tik objektus.
  • Darbas su null: wrappers objektai gali turėti reikšmę null, skirtingai nuo primityvų.
  • Naudingos metodai: wrappers klasės turi metodus, skirtus konvertuoti į tekstą, palyginti reikšmes ir pan. Pavyzdžiui, Integer.parseInt(String s).
  • Darbas su generikais: generikai dirba tik su objektais.

Trūkumai:

  • Atminties sąnaudos: wrappers objektai užima daugiau atminties nei primityvai.
  • Veikimo našumo sumažėjimas: automatinis pakuotės ir išpakuotės procesas gali šiek tiek sumažinti našumą.

Pavyzdys naudojant kolekcijoje:

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)); // Objekto kūrimas

        int firstNum = numbers.get(0); // Unboxing
        System.out.println(firstNum);
    }
}