Sobes.tech
Middle

Šta su Generics i kako se koriste u programiranju?

sobes.tech АИ

Одговор од АИ

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

Користећи generike обезбеђује се:

  • Типска безбедност: Компилатор проверава усаглашеност типова, што помаже да се избегну грешке повезане са несагласношћу типова током извршавања.
  • Поновна употребљивост кода: Исту логике може користити за рад са различитим типовима података без дуплирања.
  • Читљивост кода: Користећи конкретне типове уместо универзалног Object повећава се разумљивост кода.
  • Перформансе: У неким језицима (нпр. Јава) generici се реализују са брисањем типова (type erasure), али у другим (нпр. C#, C++) информације о типу се чувају током извршавања.

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

  • Колекције: Креирање универзалних листа, скупова, мапа које могу чувати елементе било ког типа.
    // Креирање листе стрингова
    List<String> stringList = new ArrayList<>();
    stringList.add("здраво");
    // Грешка при компилацији ако покушате да додате број
    // stringList.add(123);
    
  • Фабрике: Креирање фабрика које могу производити објекте различитих типова.
  • Методе: Писање метода који раде са универзалним типовима података.
    // Генерички метод за размену вредности
    public static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }
    
  • Класе: Креирање класа које су универзалне у односу на тип чувања или обраде података.
    // Генеричка класа Box
    class Box<T> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
    

У поређењу са коришћењем Object типа (у Јави):

Карактеристика Генерички (generics) Тип Object
Типска безбедност Током компилације Током извршавања (преко кастовања)
Потреба за кастовањем Не Да
Грешке Откривају се током компилације Могу настати током извршавања (ClassCastException)
Читљивост Висока Нижа (није јасно који типови се очекују)

Укупно, generics су моћан алат који омогућава писање поузданијег, читљивијег и поновно коришћеног кода.