Sobes.tech
Middle

Quelles fonctionnalités offrent les Génériques en programmation?

sobes.tech IA

Réponse de l'IA

Les génériques offrent les avantages suivants :

  • Sécurité de type accrue : Permettent de détecter les erreurs d'incompatibilité de types lors de la compilation, et non à l'exécution.
  • Réutilisation du code : Permettent de créer des classes, interfaces et méthodes génériques pouvant fonctionner avec différents types de données sans dupliquer le code.
  • Lisibilité améliorée : Permettent de spécifier explicitement les types de données, rendant le code plus compréhensible.
  • Performance : Dans certains langages (par exemple, Java), grâce à l'effacement de types, les génériques n'ajoutent pas de surcharge lors de l'exécution pour certaines opérations.

Exemple (Java) :

class Box<T> {
    private T item;

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

    public T getItem() {
        return item;
    }
}

// Utilisation de génériques avec différents types
Box<String> stringBox = new Box<>();
stringBox.setItem("Hello");
String message = stringBox.getItem(); // Sûr, le type est connu lors de la compilation

Box<Integer> integerBox = new Box<>();
integerBox.setItem(123);
Integer number = integerBox.getItem(); // Sûr, le type est connu lors de la compilation

Exemple (Python avec type hints) :

from typing import List, TypeVar

T = TypeVar('T')

def process_list(data: List[T]) -> None:
    # Logique de traitement de la liste d'éléments de type T
    for item in data:
        print(item)

# Utilisation avec différents types de listes
string_list: List[str] = ["apple", "banana"]
process_list(string_list)

int_list: List[int] = [1, 2, 3]
process_list(int_list)

Selon le langage, la mise en œuvre et les capacités peuvent légèrement varier (par exemple, effacement de type en Java vs réification en C#). Cependant, les principaux avantages liés à la sécurité des types et à la réutilisation du code sont communs.