Sobes.tech
Middle

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:

  1. 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
    
  2. 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
    
  3. Zlepšení čitelnosti kódu: Explicitní určení typů dat pomáhá pochopit, s jakými daty kód pracuje.

  4. 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