Sobes.tech
Middle

Ce sunt tipurile generice?

sobes.tech AI

Răspuns de la AI

Tipurile generice (Generics) sunt un mijloc de parametrizare a tipurilor, permițând crearea de clase, interfețe și metode universale. Ele permit lucrul cu diferite tipuri de date fără a pierde siguranța tipurilor în timpul compilării.

Principalele avantaje ale utilizării Generics:

  • Siguranța tipurilor: Compilatorul verifică compatibilitatea tipurilor în timpul compilării, ajutând la identificarea potențialelor erori înainte de rularea programului.
  • Reducerea duplicării codului: Se poate crea o singură clasă sau metodă care funcționează cu diferite tipuri, în loc să se scrie cod separat pentru fiecare tip.
  • O mai bună lizibilitate a codului: Utilizarea tipurilor generice face ca codul să fie mai ușor de înțeles, indicând cu ce tipuri de date lucrează.
  • Eliminarea necesității de casting explicit: Când se lucrează cu colecții generice, nu este nevoie să se convertească explicit elementele la tipul dorit la extragere.

Exemplu de utilizare în Java:

// Crearea unei liste care poate stoca doar șiruri de caractere
List<String> stringList = new ArrayList<>();
stringList.add("salut");
// stringList.add(123); // Eroare de compilare, deoarece 123 nu este un șir de caractere

// Obținerea unui element fără necesitatea de casting
String primulElement = stringList.get(0);

Exemplu de utilizare în C#:

// Crearea unei liste care poate stoca doar numere întregi
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("lume"); // Eroare de compilare, deoarece "lume" nu este un număr întreg

// Obținerea unui element fără necesitatea de casting
int numar = intList[0];

Exemplu de clasă generică:

// Clasa generică Box, care poate stoca un obiect de orice tip T
public class Box<T> {
    private T item;

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

    public T getItem() {
        return item;
    }
}

// Utilizarea clasei generice
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int valoareInt = intBox.getItem(); // Fără nevoie de casting

Box<String> stringBox = new Box<>();
stringBox.setItem("test");
String valoareString = stringBox.getItem(); // Fără nevoie de casting

Astfel, tipurile generice sunt un instrument puternic pentru crearea de cod flexibil, sigur și ușor de întreținut.