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(); // Без потребе за кастовањем
Тако су генераички типови моћан алат за креирање флексибилног, сигурног и лако одрживог кода.