Č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:
-
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 -
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 -
Zlepšenie čitateľnosti kódu: Explicitné určenie typov údajov pomáha pochopiť, s akými údajmi kód pracuje.
-
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 |