Comprendre les types génériques dans Delphi

Les génériques, un puissant ajout à Delphi, ont été introduits dans Delphi 2009 en tant que nouvelle fonctionnalité de langage. Génériques ou types génériques (également appelés types paramétrés), vous permettent de définir des classes qui ne définissent pas spécifiquement le type de certains membres de données.

Par exemple, au lieu d'utiliser le type TObjectList pour avoir une liste de tous les types d'objets, à partir de Delphi 2009, le Génériques. L'unité Collections définit un TObjectList plus fortement typé.

Voici une liste d'articles expliquant les types génériques dans Delphi avec des exemples d'utilisation:

Quoi et pourquoi et comment sur les génériques dans Delphi

Génériques avec Delphi 2009 Win32

Les génériques sont parfois appelés paramètres génériques, un nom qui permet de les introduire un peu mieux. Contrairement à un paramètre de fonction (argument), qui a une valeur, un paramètre générique est un type. Et il paramètre une classe, une interface, un enregistrement, ou, moins fréquemment, une méthode… Avec, en prime, des routines anonymes et des références de routine

Didacticiel Delphi Generics

Delphi tList, tStringList, tObjectlist ou tCollection peuvent être utilisés pour créer des conteneurs spécialisés, mais nécessitent une conversion de type. Avec les génériques, la conversion est évitée et le compilateur peut repérer les erreurs de type plus tôt.

Utilisation de génériques dans Delphi

Une fois que vous avez écrit une classe à l'aide de paramètres de type génériques (génériques), vous pouvez utiliser cette classe avec n'importe quel type et le type que vous choisissez d'utiliser avec une utilisation donnée de cette classe remplace les types génériques que vous avez utilisés lorsque vous avez créé la classe.

Interfaces génériques dans Delphi

La plupart des exemples que j'ai vus de génériques dans Delphi utilisent des classes contenant un type générique. Cependant, tout en travaillant sur un projet personnel, j'ai décidé que je voulais une interface contenant un type générique.

Exemple de type générique simple

Voici comment définir une classe générique simple:

type
TGenericContainer = classe
Valeur: T;
fin;

Avec la définition suivante, voici comment utiliser un conteneur générique d'entier et de chaîne:

var
genericInt: TGenericContainer;
genericStr: TGenericContainer;
commencer
genericInt: = TGenericContainer.Create;
genericInt.Value: = 2009; // uniquement des entiers
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // uniquement des chaînes
genericStr.Free;
fin;

L'exemple ci-dessus ne fait qu'effleurer la surface de l'utilisation de génériques dans Delphi (n'explique cependant rien - mais les articles ci-dessus ont tout ce que vous voulez savoir!).

Pour moi, les génériques ont été la raison pour passer de Delphi 7/2007 à Delphi 2009 (et plus récent).