Junior
Aké možnosti poskytujú Generics?
sobes.tech AI
Odpoveď od AI
Generiká (obecné typy) ponúkajú nasledujúce možnosti:
- Zvýšená bezpečnosť typov (Type Safety): Umožňujú odhaliť chyby typu počas fázy kompilácie, nie počas behu.
- Odstránenie konverzií typov (Type Casting): Vyhýbajú sa potrebe explicitných konverzií typu pri práci s kolekciami a inými dátovými štruktúrami.
- Vyššia opakovateľnosť kódu: Umožňujú vytvárať generické triedy, rozhrania a metódy, ktoré pracujú s rôznymi dátovými typmi bez duplikácie logiky.
- Zlepšenie výkonu: Hoci v Jave sú generiká implementované pomocou vymazania typov (Type Erasure), čo nemusí vždy priniesť priame zlepšenie výkonu v porovnaní s použitím
Objecta konverziami, v niektorých jazykoch (napríklad C#) môžu poskytnúť lepší výkon vďaka vyhýbaniu sa boxing/unboxing pri práci s primitívnymi typmi. - Čitateľnejší a udržiavateľnejší kód: Jasne uvádzajú dátové typy, s ktorými kód pracuje, čím ho robia zrozumiteľnejším.
Príklad použitia v Jave:
// Bez generík
/*
List list = new ArrayList();
list.add("reťazec");
Integer i = (Integer) list.get(0); // Chyba pri behu (ClassCastException)
*/
// S generikami
List<String> stringList = new ArrayList<>();
stringList.add("reťazec");
// Integer i = stringList.get(0); // Chyba pri kompilácii
Príklad v C#:
// Bez generík
/*
ArrayList list = new ArrayList();
list.Add("reťazec");
int i = (int)list[0]; // Chyba pri behu (InvalidCastException)
*/
// S generikami
List<string> stringList = new List<string>();
stringList.Add("reťazec");
// int i = stringList[0]; // Chyba pri kompilácii