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.