Génériques Java (avec exemples)

Dans ce didacticiel, nous allons découvrir les génériques Java, comment créer des classes et des méthodes génériques et ses avantages à l'aide d'exemples.

Les Java Generics nous permettent de créer une classe, une interface et une méthode uniques qui peuvent être utilisées avec différents types de données (objets).

Cela nous aide à réutiliser notre code.

Remarque : Generics ne fonctionne pas avec les types primitifs ( int, float, char, etc.).

Classe génériques Java

Nous pouvons créer une classe qui peut être utilisée avec tout type de données. Une telle classe est connue sous le nom de classe générique.

Voici comment nous pouvons créer une classe générique en Java:

Exemple: créer une classe générique

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

Production

 Generic Class renvoie: 5 Generic Class renvoie: Java Programming

Dans l'exemple ci-dessus, nous avons créé une classe générique nommée GenericsClass. Cette classe peut être utilisée pour travailler avec tout type de données.

 class GenericsClass (… )

Ici, T utilisé à l'intérieur du crochet angulaire indique le paramètre de type . À l'intérieur de la Mainclasse, nous avons créé deux objets de GenericsClass

  • intObj - Ici, le paramètre de type T est remplacé par Integer. Désormais, GenericsClass fonctionne avec des données entières.
  • stringObj - Ici, le paramètre de type T est remplacé par String. Désormais, GenericsClass fonctionne avec des données de chaîne.

Méthode Java Generics

Semblable à la classe générique, nous pouvons également créer une méthode qui peut être utilisée avec tout type de données. Une telle classe est connue sous le nom de méthode générique.

Voici comment nous pouvons créer une classe générique en Java:

Exemple: créer une méthode générique

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

Production

 Méthode générique: données transmises: méthode générique de programmation Java: données transmises: 25

Dans l'exemple ci-dessus, nous avons créé une méthode générique nommée genericsMethod.

 public void genericMethod(T data) (… )

Ici, le paramètre type est inséré après le modificateur publicet avant le type de retour void.

Nous pouvons appeler la méthode générique en plaçant le type réel et à l'intérieur du crochet avant le nom de la méthode.

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

Remarque : nous pouvons appeler la méthode générique sans inclure le paramètre type. Par exemple,

 demo.genericsMethod("Java Programming");

Dans ce cas, le compilateur peut faire correspondre le paramètre de type en fonction de la valeur transmise à la méthode.

Types bornés

En général, le paramètre type peut accepter tous les types de données (à l'exception des types primitifs).

Cependant, si nous voulons utiliser des génériques pour certains types spécifiques (tels que l'acceptation de données de types numériques) uniquement, nous pouvons utiliser des types bornés.

Dans le cas des types liés, nous utilisons le extendsmot - clé. Par exemple,

 

Cela signifie que T ne peut accepter que des données qui sont des sous-types de A.

Exemple: types bornés

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

Dans l'exemple ci-dessus, nous avons créé une classe nommée GenericsClass. Remarquez l'expression, notez l'expression

  

Ici, GenericsClass est créé avec un type borné. Cela signifie GenericsClass ne peut fonctionner avec des types de données qui sont des enfants de Number( Integer, Double, etc.).

Cependant, nous avons créé un objet de la classe générique avec String. Dans ce cas, nous obtiendrons l'erreur suivante.

GenericsClass obj = new GenericsClass (); raison: la variable d'inférence T a des limites incompatibles Contraintes d'égalité: String limites inférieures: Nombre où T est une variable de type: T étend Nombre déclaré dans la classe GenericsClass

Avantages des génériques Java

1. Réutilisation du code

Avec l'aide de génériques en Java, nous pouvons écrire du code qui fonctionnera avec différents types de données. Par exemple,

 public void genericsMethod(T data) (… )

Ici, nous avons créé une méthode générique. Cette même méthode peut être utilisée pour effectuer des opérations sur des données entières, des données de chaîne, etc.

2. Vérification du type à la compilation

Le paramètre type des génériques fournit des informations sur le type de données utilisé dans le code générique. Par exemple,

 // using Generics GenericsClass list = new GenericsClass();

Ici, nous savons que GenericsClass ne fonctionne qu'avec des Integerdonnées.

Maintenant, si nous essayons de transmettre des données autres que Integer à cette classe, le programme générera une erreur au moment de la compilation.

3. Utilisé avec les collections

Le framework de collections utilise le concept des génériques en Java. Par exemple,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

Dans l'exemple ci-dessus, nous avons utilisé la même classe ArrayList pour travailler avec différents types de données.

Semblable à d' ArrayListautres collections ( LinkedList, Queue, Maps, etc.) sont également génériques en Java.

Articles intéressants...