Comment créer et utiliser une classe générique en Java
Les génériques sont un concept de programmation qui vous permet de spécifier le type que vous avez l’intention de stocker dans une collection. Un type générique peut être n’importe quelle valeur non primitive. Les paramètres de type traditionnels que vous connaissez peut-être sont string et integer.
Cependant, vous pouvez créer un type générique unique. En outre, vous pouvez créer une classe générique et l’utiliser pour créer différentes collections à l’aide des génériques.
Création d’un type générique
Un type générique est essentiellement un objet créé à l’aide d’une classe ou d’une interface. Ainsi, pour cet article, le type générique sera un client. En utilisant un exemple d’application au niveau de l’entreprise, le client représente une entité dans un système de base de données. Ce système de base de données gère une entreprise de meubles qui possède trois sites physiques dans trois villes différentes.
Vous remarquerez la présence de l’élément abstraites dans le mot-clé Client ci-dessus. Cela signifie que vous ne pouvez pas créer un type ou un objet direct à partir de la classe Client type.
Étant donné que chaque magasin physique aura une liste unique de clients, l’application devra avoir trois sous-classes de clients que vous mettrez en œuvre en utilisant le concept de programmation par héritage.
Ces trois sous-classes seront les types solides de la classe générique Client générique. La première sous-classe Client contiendra le code suivant :
Création d’une classe générique
Pour utiliser un type générique, vous devez disposer d’une classe ou d’une méthode générique qui accepte ce type en tant que paramètre. Pour créer une classe générique, il suffit d’insérer le paramètre de type dans la déclaration de la classe.
Le code ci-dessus indique que le paramètre Promotion est générique. Cela signifie que la classe Promotion utilise des types pour créer ses objets. La déclaration de la classe peut maintenant prendre une collection d’objets qui sont des chaînes de caractères, des nombres entiers, des clients, etc. Cependant, l’entreprise d’ameublement ne souhaite que la classe Promotion crée des objets à l’aide de la classe Client .
Le code mis à jour ci-dessus garantit que les types Promotion ne prenne que la classe Client cela signifie que toutes les sous-classes de la classe Client .
Étant donné qu’il y a trois magasins, l’entreprise souhaite créer une promotion indépendante pour chaque magasin. Les données requises pour ces promotions sont similaires. Chaque promotion aura un nom et une collection de clients qui ont gagné dans cette promotion.
Il existe plusieurs façons d’aborder ce problème. Vous pouvez créer une Promotion et avoir trois sous-classes pour chaque magasin. Mais comme chaque Promotion a une structure similaire, vous finirez par écrire du code en double, ce qui est inefficace (d’autant plus que vous travaillez déjà avec Client ).
Par conséquent, une sous-classe Promotion est l’une des solutions les plus efficaces à ce problème.
La Promotion possède une seule variable (promoName). Cette classe Java accepte une collection de clients qui ont gagné la promotion (gagnants) et les stocke dans une structure de données ArrayList. Pour ajouter un nouveau client à une collection de promotions spécifique, vous devez utiliser la classe Java addCustomer() pour ajouter un nouveau client à une collection de promotions spécifique. Si, à un moment donné, vous souhaitez connaître le nombre de clients que contient une collection, vous pouvez invoquer la méthode numWinners() de la méthode numWinners().
Création de collections à l’aide d’une classe générique
Avant de pouvoir commencer à créer des collections, vous devrez créer des clients.
Les Principal ci-dessus crée quatre objets clients, chacun appartenant à l’un des trois magasins. Pour commencer à créer des collections, vous devez d’abord créer des objets de promotion (un pour chaque magasin).
En insérant les trois lignes de code ci-dessus dans la classe Principal créera effectivement trois promotions spécifiques au type (ou à l’emplacement). Ainsi, seuls les clients du magasin situé dans la première ville (City1Customer) peuvent participer à la promotion de cette ville ( ville1promo).
Par conséquent, en ajoutant le code ci-dessus à l’élément Principal produira le résultat suivant dans la console :
Cependant, si vous essayez d’ajouter un troisième client à la liste des gagnants de la promotion dans la première ville, votre IDE produira une erreur de compilation.
Ceci est dû au fait que ni la classe Jane ni Jess n’est pas un client du magasin de la première ville. La création de types et de classes génériques est utile, car elle permet d’éviter que ces erreurs simples ne soient pas détectées et ne corrompent la base de données d’un système. Dans une petite application, il peut être facile de repérer des erreurs de ce type, mais dans un système d’entreprise, elles risquent de ne pas être détectées.
En remplaçant la ligne de code erronée par la ligne ci-dessus, la console affichera la sortie suivante :
Avantages de l’utilisation des types génériques
L’exemple d’application présenté dans cet article montre que l’un des principaux avantages de l’utilisation des types génériques est la vérification des types au moment de la compilation. Sans contrôle de type, l’ajout de Jane à l’une des trois listes de promotion ne produirait pas d’erreur à l’exécution, car Jane est en effet une cliente de l’entreprise de meubles.
Les génériques offrent également plusieurs autres avantages, notamment la réutilisation du code et l’évolutivité. Au fur et à mesure que l’entreprise s’étend à de nouvelles villes, vous pouvez facilement créer de nouveaux types d’objets de promotion, en vous appuyant fortement sur le code existant. Les types génériques vous permettent également de créer un code efficace, ce qui est une priorité absolue dans le processus de développement logiciel.