Sobes.tech
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 Object a 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