Sobes.tech
Middle

Šta su generički tipovi?

sobes.tech АИ

Одговор од АИ

Обобщени типови (Generics) су средство за параметризација типова која омогућава креирање универзалних класа, интерфејса и метода. Они омогућавају рад са различитим типовима података без губитка безбедности типа током компилације.

Главне предности коришћења Generics:

  • Безбедност типа: Компилатор проверава усклађеност типова током компилације, помажући у откривању потенцијалних грешака пре покретања програма.
  • Смањење дуплирања кода: Може се створити једна класа или метода која ради са различитим типовима, уместо да се пише одвојени код за сваки тип.
  • Боља читљивост кода: Коришћење генератичких типова чини код разумљивијим, указујући на које типове података ради.
  • Уклањање потребе за експлицитним кастовањем: Радом са генераичким колекцијама, није потребно експлицитно претварање елемената у жељени тип при екстракцији.

Пример коришћења у Јави:

// Креирање листе која може чувати само стрингове
List<String> stringList = new ArrayList<>();
stringList.add("здраво");
// stringList.add(123); // Грешка компајлирања, јер 123 није стринг

// Добијање елемента без потребе за кастовањем
String првиЕлемент = stringList.get(0);

Пример коришћења у Ц#:

// Креирање листе која може чувати само целе бројеве
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("свет"); // Грешка компајлирања, јер "свет" није цео број

// Добијање елемента без потребе за кастовањем
int број = intList[0];

Пример генератичке класе:

// Генеричка класа Box, која може чувати објекат било ког типа T
public class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

// Коришћење генератичке класе
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int вредност = intBox.getItem(); // Без потребе за кастовањем

Box<String> stringBox = new Box<>();
stringBox.setItem("тест");
String вредност = stringBox.getItem(); // Без потребе за кастовањем

Тако су генераички типови моћан алат за креирање флексибилног, сигурног и лако одрживог кода.