Co jsou Generics a k čemu slouží?
sobes.tech AI
Odpověď od AI
Generics (obecné typy) jsou mechanismus v programovacích jazycích, který umožňuje vytvářet třídy, rozhraní a metody, které pracují s daty různých typů, aniž by bylo třeba předem znát konkrétní typ dat.
Používají se pro:
-
Zvýšení bezpečnosti typů (Type Safety): Kompilátor kontroluje typy dat během kompilace, čímž předchází chybám, které by se mohly objevit pouze při běhu (Runtime Errors).
// Příklad bez generik - potenciální chyba při extrakci List list = new ArrayList(); list.add("string"); list.add(123); // Lze přidat jakýkoli typ String s = (String) list.get(1); // Chyba ClassCastException při běhu -
Opakované použití kódu (Code Reusability): Stejný kód může pracovat s různými typy dat bez nutnosti psaní samostatných verzí pro každý typ.
// Příklad s generiky - bezpečné použití List<String> list = new ArrayList<>(); // Určili typ String list.add("string"); // list.add(123); // Kompilátor dá chybu - nelze přidat int String s = list.get(0); // Není třeba převádět typ -
Zlepšení čitelnosti kódu: Explicitní určení typů dat pomáhá pochopit, s jakými daty kód pracuje.
-
Optimalizace výkonu: V některých jazycích (například C#) mohou generiky zajistit lepší výkon ve srovnání s používáním základních typů (například
Object), protože není třeba balení/rozbalování (boxing/unboxing).
Například standardní datové kolekce (seznamy, množiny, mapy) v většině jazyků používají generiky pro práci s prvky jakéhokoliv typu, čímž zajišťují bezpečnost a pohodlí.
| Bez generik | S generiky |
|---|---|
Funguje s typy Object |
Funguje s konkrétními typy |
| Vyžaduje explicitní převod typů | Nevyžaduje převod typů |
| Chyby typů jsou detekovány při běhu | Chyby typů jsou detekovány při kompilaci |
| Méně čitelný kód | Čitelnější kód |