Sobes.tech
Junior

Šta su Wrapper klase (Wrapper classes) u Javi?

sobes.tech АИ

Одговор од АИ

Wrapper класе у Јави су класе које пружају објектно-оријентисан приказ примитивних типова података. Омогућавају коришћење примитивних вредности у контекстима где су потребни објекти, на пример, у колекцијама или при раду са мулти-тредингом.

Главне Wrapper класе:

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

Примери употребе:

Користење примитивних типова:

// Примитивни тип
int x = 10;

Користење Wrapper класе:

// Wrapper класа
Integer y = new Integer(20); // Старији начин креирања
Integer z = 30; // Autoboxing (автоматска конверзија примитивног у објекат)

Конверзија између примитивних и Wrapper објеката:

  • Autoboxing: Аутоматска конверзија примитивног у Wrapper објекат.
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: Аутоматска конверзија Wrapper објекта у примитив.
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Предности Wrapper класа:

  • Рад са колекцијама: Колекције (List, Set, Map) чувају само објекте.
  • Рад са null: Wrapper објекти могу имати вредност null, за разлику од примитивних типова.
  • Пружа корисне методе: Wrapper класе имају методе за претварање у низове, поређење вредности итд. На пример, Integer.parseInt(String s).
  • Рад са генерицима: Генерички типови раде само са објектима. Недостаци Wrapper класа:
  • Потрошња меморије: Wrapper објекти заузимају више меморије од примитивних типова.
  • Смањење перформанси: Аутоматска конверзија (autoboxing и unboxing) може благо смањити перформансе. Пример употребе у колекцији:
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)); // Јасно креирање објекта

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