Vidéo: Part 9- POO Java Bases de la généricité 2024
Une classe générique en Java est une classe qui peut fonctionner sur un type spécifique spécifié par le programmeur lors de la compilation temps. Pour ce faire, la définition de classe utilise le paramètre de type s qui agissent comme des variables représentant des types (tels que int ou String). Pour créer une classe générique, vous devez lister le paramètre type après le nom de la classe entre chevrons. Le paramètre type spécifie un nom que vous pouvez utiliser dans toute la classe, quel que soit l'endroit où vous utiliseriez un type. Par exemple, voici une version simplifiée de la déclaration de classe pour la classe ArrayList:
J'ai omis les clauses extends et implements pour me concentrer sur le paramètre de type formel:. Le paramètre E spécifie le type des éléments qui sont stockés dans la liste.
Pour créer une instance d'une classe générique, vous devez fournir le type réel qui sera utilisé à la place du paramètre type, comme ceci:
ArrayList myArrayList;
Ici le paramètre E est String, donc le type d'élément pour cette instance de la classe ArrayList est String.
public boolean add (E o) {// corps de la méthode omise (merci)}
Où vous normalement s'attendre à voir un type de paramètre, vous voyez la lettre E. Ainsi, cette déclaration de méthode spécifie que le type du paramètre o est le type spécifié pour le paramètre de type formel E. Si E est String, la méthode add accepte uniquement les objets String. Si vous appelez la méthode add en passant autre chose qu'un paramètre String, le compilateur génère un message d'erreur.
Ici, E est spécifié comme type de retour. Cela signifie que si E est String, cette méthode renvoie des objets String.
Le principal avantage des génériques est que la vérification de type se produit au moment de la compilation. Ainsi, après avoir spécifié la valeur d'un paramètre de type formel, le compilateur sait comment effectuer la vérification de type impliquée par le paramètre. C'est ainsi qu'il sait ne pas vous laisser ajouter des objets String à une collection Employee.