Sobes.tech
Junior

Jaké možnosti poskytují Generics?

sobes.tech AI

Odpověď od AI

Generika (obecné typy) nabízejí následující možnosti:

  • Zvýšení bezpečnosti typů (Type Safety): Umožňují odhalit chyby typu při kompilaci, nikoli při běhu.
  • Odstranění přetypování (Type Casting): Vyhýbají se nutnosti explicitního přetypování při práci s kolekcemi a jinými datovými strukturami.
  • Vyšší znovupoužitelnost kódu: Umožňují vytvářet generické třídy, rozhraní a metody, které pracují s různými datovými typy bez duplikace logiky.
  • Zlepšení výkonu: Ačkoliv v Javě jsou generika implementována pomocí erasure (vymazání typů), což nemusí vždy přímo zlepšit výkon ve srovnání s použitím Object a přetypováním, v některých jazycích (například C#) mohou poskytnout lepší výkon díky eliminaci boxing/unboxing při práci s primitivními typy.
  • Čitelnější a udržitelnější kód: Jasně uvádějí datové typy, se kterými kód pracuje, což jej činí srozumitelnějším.

Příklad použití v Javě:

// Bez generik
/*
List list = new ArrayList();
list.add("řetězec");
Integer i = (Integer) list.get(0); // Chyba za běhu (ClassCastException)
*/

// S generiky
List<String> stringList = new ArrayList<>();
stringList.add("řetězec");
// Integer i = stringList.get(0); // Chyba při kompilaci

Příklad v C#:

// Bez generik
/*
ArrayList list = new ArrayList();
list.Add("řetězec");
int i = (int)list[0]; // Chyba za běhu (InvalidCastException)
*/

// S generiky
List<string> stringList = new List<string>();
stringList.Add("řetězec");
// int i = stringList[0]; // Chyba při kompilaci