Sobes.tech
Middle

Čo sú Generics a na čo slúžia?

sobes.tech AI

Odpoveď od AI

Generics (všeobecnosti) sú mechanizm v programovacích jazykoch, ktorý umožňuje vytvárať triedy, rozhrania a metódy pracujúce s údajmi rôznych typov, bez toho, aby bolo potrebné poznať konkrétny typ údajov vopred.

Používajú sa na:

  1. Zvýšenie bezpečnosti typov (Type Safety): Kompilátor kontroluje typy údajov počas kompilácie, čím zabraňuje chybám, ktoré by sa mohli vyskytnúť iba počas behu (Runtime Errors).

    // Príklad bez Generics - potenciálna chyba pri extrakcii
    List list = new ArrayList();
    list.add("string");
    list.add(123); // Môže sa pridať akýkoľvek typ
    String s = (String) list.get(1); // Chyba ClassCastException počas behu
    
  2. Opakovateľné použitie kódu (Code Reusability): Rovnaký kód môže pracovať s rôznymi typmi údajov bez potreby písania samostatných verzií pre každý typ.

    // Príklad s Generics - bezpečné použitie
    List<String> list = new ArrayList<>(); // Určili sme typ String
    list.add("string");
    // list.add(123); // Kompilátor vypíše chybu - nie je možné pridať int
    String s = list.get(0); // Nie je potrebné konverzia typu
    
  3. Zlepšenie čitateľnosti kódu: Explicitné určenie typov údajov pomáha pochopiť, s akými údajmi kód pracuje.

  4. Optimalizácie výkonu: V niektorých jazykoch (napríklad C#) môžu Generics zabezpečiť lepší výkon v porovnaní s používaním základných typov (napríklad Object), pretože nie je potrebné balenie/rozbalovanie (boxing/unboxing).

Napríklad štandardné dátové kolekcie (zoznamy, množiny, mapy) vo väčšine jazykov používajú Generics na prácu s prvkami akéhokoľvek typu, zabezpečujúc bezpečnosť a pohodlie.

Bez Generics S Generics
Funguje s typmi Object Funguje s konkrétnymi typmi
Vyžaduje explicitné konverzie typov Nevyžaduje konverzie typov
Chyby typov sa zistia počas Runtime Chyby typov sa zistia počas kompilácie
Menej čitateľný kód Viac čitateľný kód