Sobes.tech
Middle

Ce sunt Generics și cum sunt utilizate în programare?

sobes.tech AI

Răspuns de la AI

Generice (generics) reprezintă posibilitatea de a scrie cod care poate lucra cu diferite tipuri de date, menținând în același timp siguranța tipurilor în timpul compilării. Ele permit crearea de clase, interfețe și metode în care tipul de date este determinat în momentul utilizării, nu la declarare.

Utilizarea generics asigură:

  • Siguranța tipurilor: Compilatorul verifică compatibilitatea tipurilor, ajutând la evitarea erorilor legate de incompatibilitatea tipurilor în timpul execuției.
  • Reutilizarea codului: Același cod poate fi folosit pentru a lucra cu diferite tipuri de date fără a duplica logica.
  • ** lizibilitatea codului:** Utilizarea tipurilor specifice în loc de Object universal crește claritatea codului.
  • Performanța: În unele limbaje (de exemplu, Java), generics sunt implementate prin ștergerea tipurilor (type erasure), dar în altele (cum ar fi C#, C++), informația despre tip este păstrată în timpul execuției.

Exemple de utilizare:

  • Colecții: Crearea de liste, mulțimi și hărți generice care pot stoca elemente de orice tip.
    // Crearea unei liste de șiruri
    List<String> stringList = new ArrayList<>();
    stringList.add("salut");
    // Eroare de compilare dacă se încearcă adăugarea unui număr
    // stringList.add(123);
    
  • Fabrici: Crearea de fabrici care pot genera obiecte de diferite tipuri.
  • Metode: Scrierea de metode care lucrează cu tipuri de date generice.
    // Metodă generică pentru schimbarea valorilor
    public static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }
    
  • Clase: Crearea de clase care sunt generice în raport cu tipul de date stocat sau procesat.
    // Clasă generică Box
    class Box<T> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
    

Comparativ cu utilizarea tipului Object (în Java):

Caracteristică Generics Tip Object
Siguranța tipurilor În timpul compilării În timpul execuției (prin casting)
Necesitatea casting-ului Nu Da
Erori Detectate în timpul compilării Pot apărea în timpul execuției (ClassCastException)
Lizibilitate Înaltă Mai scăzută (nu este clar ce tipuri sunt așteptate)

În general, generics sunt un instrument puternic care permite scrierea de cod mai fiabil, mai ușor de citit și reutilizabil.