Sobes.tech
Middle

Čo sú generické typy?

sobes.tech AI

Odpoveď od AI

Generické typy sú prostriedkom parametrizácie typov, ktorý umožňuje vytvárať univerzálne triedy, rozhrania a metódy. Umožňujú pracovať s rôznymi typmi údajov bez straty typovej bezpečnosti počas kompilácie.

Hlavné výhody používania generík:

  • Typová bezpečnosť: Kompilátor kontroluje zhodu typov v štádiu kompilácie, čo pomáha odhaliť potenciálne chyby ešte pred spustením programu.
  • Zníženie duplikácie kódu: Môžete vytvoriť jednu triedu alebo metódu, ktorá pracuje s rôznymi typmi, namiesto písania samostatného kódu pre každý typ.
  • Zvýšená čitateľnosť kódu: Použitie všeobecných typov robí kód prehľadnejším, ukazujúc, s akými typmi údajov pracuje.
  • Odstránenie potreby explicitného prevodu typov (casting): Pri práci s generickými kolekciami nie je potrebné explicitne prevádzať prvky na požadovaný typ pri ich získavaní.

Príklad použitia v Jave:

// Vytvorenie zoznamu, ktorý môže obsahovať iba reťazce
List<String> stringList = new ArrayList<>();
stringList.add("hello");
// stringList.add(123); // Chyba kompilácie, pretože 123 nie je reťazec

// Získanie prvku bez potreby prevodu typu
String firstElement = stringList.get(0);

Príklad použitia v C#:

// Vytvorenie zoznamu, ktorý môže obsahovať iba celé čísla
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("world"); // Chyba kompilácie, pretože "world" nie je celé číslo

// Získanie prvku bez potreby prevodu typu
int number = intList[0];

Príklad všeobecnej triedy:

// Všeobecná trieda Box, ktorá môže obsahovať objekt akéhokoľvek typu T
public class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

// Použitie všeobecnej triedy
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int intValue = intBox.getItem(); // Nie je potrebný prevod

Box<String> stringBox = new Box<>();
stringBox.setItem("test");
String stringValue = stringBox.getItem(); // Nie je potrebný prevod

Takže generické typy sú mocným nástrojom na vytváranie flexibilného, bezpečného a ľahko udržiavateľného kódu.