Generics en Java
Nommez le type d'élément entre chevrons quand vous construisez une liste. Dans Bin.java, gardez la classe publique Bin, importez java.util.ArrayList, créez ArrayList<String> names = new ArrayList<>();, ajoutez "oak", et affichez names.get(0). Compilez avec javac Bin.java et lancez java Bin. L'écran doit montrer oak. Une seconde démo stocke la valeur Integer 3 de la même manière. Laissez Lambda optionnel pour la page suivante. Cette leçon porte sur les listes typées avec generics, pas sur les args en ligne de commande et pas sur un mini-projet Scanner.
Une liste String avec un argument de type
Ouvrez Bin.java. Gardez le nom de classe publique Bin. Supprimez les restes de démos Program Arguments Flag, les invites Scanner Box, les impressions Compiling Build, et l'historique Collection Shelf s'ils enterrent l'histoire des generics. Le programme ne doit pas attendre une saisie clavier et ne doit pas lire args.
Ajoutez l'import en tête :
import java.util.ArrayList;
Dans Bin.main, créez une liste dont les éléments sont String :
ArrayList<String> names = new ArrayList<>();
Les chevrons après ArrayList contiennent l'argument de type String. Le <> vide côté new est le diamond — Java reprend le même type à gauche. Puis stockez un mot et affichez-le par index :
names.add("oak");
System.out.println(names.get(0));
get(0) renvoie un String parce que la liste a été déclarée avec String. L'écran montre oak.
import java.util.ArrayList;
public class Bin {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("oak");
System.out.println(names.get(0));
}
}
Depuis le dossier qui contient Bin.java, lancez javac Bin.java. Quand accolades, crochets et points-virgules concordent, javac n'affiche pas sa propre ligne. Puis lancez java Bin — pas java Bin.java. Gardez une seule classe publique pour que le nom corresponde à Bin.
Parcourez l'exécution une fois. Java démarre à Bin.main. La liste est typée pour String. add stocke "oak". get(0) renvoie ce mot. println écrit oak. Rien n'affiche args[0] depuis Flag. Rien n'attend à item:. Rien n'affiche [oak, pine] sauf si vous lancez encore un ancien fichier Shelf.
Dites la règle débutant en regardant l'écran : les chevrons nomment le type d'élément ; le diamond le répète sur new ; get renvoie ce type. N'inventez pas de démos Lambda sur cette page. Lambda attend la prochaine leçon optionnelle. Ne laissez pas la liste brute en ArrayList names sans argument de type dans ce fichier pédagogique.
Si vous voyez encore oak avec java Flag oak, c'étaient des arguments de programme. Ici oak est un élément de liste, et la commande d'exécution est seulement java Bin. Si javac ne trouve pas ArrayList, vérifiez la ligne d'import.
Une liste Integer avec la même habitude
Les generics ne servent pas qu'aux mots. Gardez la même classe publique Bin. Construisez une liste de valeurs Integer :
ArrayList<Integer> nums = new ArrayList<>();
nums.add(3);
System.out.println(nums.get(0));
Recompilez avec javac Bin.java et lancez java Bin. L'écran montre 3. L'argument de type est Integer parce que ArrayList stocke des objets, et Integer est la forme objet des entiers dans cette forme débutant. Le diamond copie encore le type depuis le côté gauche.
import java.util.ArrayList;
public class Bin {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>();
nums.add(3);
System.out.println(nums.get(0));
}
}
Parcourez l'exécution une fois. La liste est typée pour Integer. add(3) stocke la valeur. get(0) la renvoie. println écrit 3. Gardez les deux démos comme deux formes pédagogiques. D'abord prouvez une liste String. Puis prouvez une liste Integer. Les deux partagent import, diamond, add, et get(0).
Si vous écrivez ArrayList<String> puis add(3), javac rejette l'inadéquation. Si vous écrivez ArrayList<Integer> puis add("oak"), javac rejette aussi. L'argument de type est un contrat sur ce que la liste contient.
Habitudes de liste typée
Gardez l'argument de type et le diamond ensemble pendant la pratique.
📊 Generics habits for Bin
| Habit | Forme typée | Contrôle débutant |
|---|---|---|
| Déclarer | ArrayList<String> names |
les chevrons nomment le type d'élément |
| Créer | new ArrayList<>() |
le diamond copie le type depuis la gauche |
| Stocker String | names.add("oak") |
la valeur correspond à String |
| Stocker Integer | nums.add(3) |
la valeur correspond à Integer |
| Lire | get(0) |
renvoie le type d'élément déclaré |
Generics n'est ni Flag ni Lambda
Program Arguments remplissait String[] args depuis la ligne de lancement. Les generics nomment le type d'élément d'une collection que vous construisez dans le code. Lambda raccourcira certaines formes d'appel sur une page optionnelle ultérieure. Ne mélangez pas ces trois rôles dans un seul fichier débutant aujourd'hui.
oak dans Bin est une valeur stockée en liste. oak après java Flag était un argument. Même orthographe, rôle différent. Quand un fichier Flag restant exige encore des mots sur la ligne de commande, laissez-le comme historique et lancez java Bin sans mots supplémentaires.
Sans argument de type, une liste brute perd le contrat clair que cette page enseigne. Gardez ArrayList<String> ou ArrayList<Integer> dans les démos que vous conservez. Gardez la syntaxe Lambda hors de cette page jusqu'à cette leçon.
Vérifications du dossier avant Lambda
Listez le dossier après une compilation réussie. Vous devez voir Bin.java et Bin.class ensemble. Modifiez la source, enregistrez, lancez javac Bin.java, puis java Bin. Un .class obsolète peut montrer un ancien affichage si vous sautez la compilation après une modification.
Si javac se plaint de classes publiques en double, gardez seulement Bin publique. Si l'écran montre [oak] au lieu de oak, vous avez affiché toute la liste au lieu de get(0) — gardez l'affichage pédagogique sur get(0). Si rien ne s'affiche, confirmez que main appelle encore println.
Ne collez pas les boucles d'arguments Flag dans Bin. Ne collez pas les invites Scanner Box dans Bin. Le travail generics optionnel, c'est des listes typées avec un type d'élément clair.
Avant Lambda optionnel
Vous pouvez garder la classe publique Bin, importer ArrayList, construire ArrayList<String> avec un diamond, ajouter "oak", afficher get(0) comme oak, puis construire ArrayList<Integer>, ajouter 3, et afficher 3. Compilez avec javac Bin.java et lancez java Bin. Le tableau sépare déclarer, créer, stocker et lire. La page optionnelle suivante est Lambda.
Gardez les démos Bin pour une paire generics claire. Gardez les fichiers arguments Flag hors de cette page quand vous pratiquez les listes typées. Gardez les fichiers Mini Project Box hors de cette page quand vous pratiquez les listes typées. Gardez le travail Lambda hors de cette page jusqu'à cette leçon. Ces habitudes sont le point de contrôle avant la suite. Quand la démo String montre oak ou la démo Integer montre 3, Generics a fait son travail pour cette leçon et vous êtes prêt pour Lambda si vous continuez le parcours optionnel.
Un dernier passage dans le dossier : un seul Bin public, import présent, arguments de type entre chevrons, diamond sur new, valeurs add correspondantes, affichage get(0), pas d'attente Scanner, pas de mots de lancement requis. Lancez encore javac Bin.java et java Bin sur la démo ouverte. Si l'écran montre toujours oak ou 3, la forme Generics est solide et le cours peut passer à Lambda optionnel sur la page suivante. Préférez une habitude de liste typée claire par lecture pour que chaque passage enseigne la même carte.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut