Java Generics Tutorial – que sont les génériques et comment les utiliser?

Java Génériques est l’une des caractéristiques les plus importantes du langage Java. L’idée derrière les génériques est assez simple, cependant, elle se révèle parfois complexe en raison du changement de la syntaxe habituelle qui lui est associée.

le but de ce tutoriel est de vous présenter ce concept utile de génériques d’une manière facile à comprendre.

Mais avant de plonger dans les génériques lui-même, voyons pourquoi les génériques Java étaient nécessaires en premier lieu.,

objet des génériques Java

avant l’introduction des génériques dans Java 5, vous pouviez écrire et compiler un extrait de code comme celui-ci sans lancer d’erreur ou d’avertissement:

vous pouviez ajouter des valeurs de tout type à une liste ou une autre Collection Java sans avoir à déclarer quel type de Mais lorsque vous récupérez des valeurs de la liste, vous devez les convertir explicitement en un certain type.

envisagez de parcourir la liste ci-dessus.,

autoriser la création d’une liste sans d’abord déclarer le type de données stockées, comme nous l’avons fait, pourrait entraîner des erreurs de programmeurs comme ci-dessus qui jetteClassCastExceptions pendant l’exécution.

Les génériques ont été introduits pour empêcher les programmeurs de faire de telles erreurs.

avec les génériques, vous pouvez déclarer explicitement le type de données qui va être stocké lors de la création d’une Collection Java comme le montre l’exemple suivant.,

Remarque: Vous pouvez toujours créer un objet de collection Java sans spécifier le type de données stockées, mais ce n’est pas recommandé.

Maintenant, vous ne pouvez pas stocker par erreur un entier dans une liste de types de chaînes sans générer une erreur de compilation. Cela garantit que votre programme ne rencontre pas d’erreurs d’exécution.

le but principal de L’introduction des génériques en Java était d’éviter de rencontrerClassCastExceptions pendant l’exécution.

création de génériques Java

Vous pouvez utiliser des génériques pour créer des classes et des méthodes Java., Regardons les exemples de créer des génériques de chaque type.

Generic Class

lors de la création d’une classe générique, le paramètre type de la classe est ajouté à la fin du nom de la classe dans angle<> brackets.

Ici, T est le paramètre de type de données. T, N et E sont quelques-uns des lettres utilisées pour le type de données paramètres, selon les conventions Java.,

dans l’exemple ci-dessus, vous pouvez lui transmettre un type de données spécifique lors de la création d’un objet GenericClass.

Vous ne pouvez pas passer un type de données primitif au paramètre Type de données lors de la création d’un objet de classe générique. Seuls les types de données qui étendent le type D’objet peuvent être passés en tant que paramètres de type.

Par exemple:

Méthodes Génériques

la Création de méthodes génériques suit une tendance similaire à la création de classes génériques. Vous pouvez implémenter une méthode générique dans une classe générique ainsi qu’une méthode non générique.,

Ici, vous pouvez passer un tableau d’un type spécifique de paramétrer la méthode. La méthode générique PrintItems() parcourt le tableau passé et imprime les éléments stockés comme une méthode Java normale.

paramètres de Type borné

Jusqu’à présent, les classes et méthodes génériques que nous avons créées ci-dessus peuvent être paramétrées à n’importe quel type de données autre que les types primitifs. Mais que faire si nous voulions limiter les types de données qui peuvent être transmis aux génériques? C’est là que les paramètres de type borné entrent en jeu.,

Vous pouvez lier les types de données acceptés par une classe ou une méthode générique en spécifiant qu’il doit s’agir d’une sous-classe d’un autre type de données.

Par exemple:

ici, lesUpperBoundedClassEtUpperBoundedMethodne peuvent être paramétrés qu’à l’aide de sous-types du type de donnéesList.

List le type de données agit comme une borne supérieure du paramètre type. Si vous essayez d’utiliser un type de données qui n’est pas un sous-type de List, une erreur de compilation sera générée.

Les limites ne sont pas limitées aux seules classes., Vous pouvez également passer des interfaces. Étendre l’interface signifie, dans ce cas, implémenter l’interface.

Un paramètre peut également avoir plusieurs limites, comme le montre cet exemple.

le type de données acceptant doit être une sous-classe des classes Animal et Mammal. Si l’une de ces bornes est une classe, elle doit figurer en premier dans la déclaration liée.

dans l’exemple ci-dessus, si Mammal est une classe et Animal est une interface, Mammal doit venir en premier comme indiqué ci-dessus. Sinon, le code génère une erreur de compilation.,

jokers génériques Java

Les jokers sont utilisés pour transmettre des paramètres de types génériques à des méthodes. Contrairement à une méthode générique, ici, le paramètre générique est passé aux paramètres acceptés par la méthode, ce qui est différent du paramètre de type de données que nous avons discuté ci-dessus. Un caractère générique est représenté par le ? symbole.

Au-dessus printItems() méthode accepte les listes de tout type de données en tant que paramètre. Cela empêche les programmeurs d’avoir à répéter des codes pour des listes de différents types de données, ce qui serait le cas sans génériques.,

caractères génériques bornés supérieurs

Si nous voulons limiter les types de données stockés dans la liste acceptée par la méthode, nous pouvons utiliser des caractères génériques bornés.

Exemple:

printSubTypes() méthode n’accepte que les listes qui stockent des sous-types de la Couleur. Il accepte une liste D’objets RedColor ou BlueColor, mais n’accepte pas une liste D’objets Animaux. C’est parce que L’Animal n’est pas un sous-type de couleur. Ceci est un exemple d’un caractère générique borné supérieur.,

Bas Délimitée Jokers

de Même, si nous avions:

ensuite, la balise printSuperTypes() méthode accepte uniquement les listes qui stockent des super-types de la classe Chien. Il accepterait une liste d’objets mammifères ou animaux mais pas une liste D’objets LabDog car LabDog n’est pas une superclasse de chien, mais une sous-classe. Ceci est un exemple de caractère générique borné inférieur.

Conclusion

Java Generics est devenu une fonctionnalité dont les programmeurs ne peuvent pas se passer depuis son introduction.

Cette popularité est due à son impact sur la facilitation de la vie des programmeurs., En plus de les empêcher de faire des erreurs de codage, l’utilisation de génériques rend le code moins répétitif. Avez-vous remarqué comment il généralise les classes et les méthodes pour éviter d’avoir à répéter le code pour différents types de données?

Avoir une bonne connaissance des génériques est important pour devenir un expert dans la langue. Donc, appliquer ce que vous avez appris dans ce tutoriel dans le code pratique est la façon d’aller de l’avant maintenant.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *