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
Objecta 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