Chargement...

Records en Java

Déclarez un type de données compact avec record et lisez ses composants. Dans Card.java, gardez un record Tag(String name) {} package-private, gardez la classe publique Card, construisez Tag t = new Tag("oak");, et affichez t.name(). Compilez avec javac Card.java et lancez java Card. L'écran doit montrer oak. Une seconde démo ajoute un composant int pour que l'écran montre oak, puis 3. Laissez JUnit optionnel pour la page suivante. Cette leçon est un record avec accessors, pas un pipeline Streams et pas une promenade Lambda forEach.

Un composant, un accessor

Ouvrez Card.java. Gardez le nom de classe publique Card. Supprimez les démos streams Pipe restantes, les impressions lambda Cue restantes, les listes Generics Bin restantes, et les invites Scanner Box si elles enterrent l'histoire des records. Le programme ne doit pas attendre une saisie clavier et ne doit pas démarrer un pipeline stream.
Au-dessus de la classe publique, déclarez le record :
record Tag(String name) {}
Dans Card.main, construisez une instance et affichez l'accessor :
Tag t = new Tag("oak");
System.out.println(t.name());
L'en-tête du record liste les composants entre parenthèses. Java génère le constructeur et l'accessor name() pour ce composant. L'écran montre oak.

Card record Tag prints oak

java
record Tag(String name) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak");
        System.out.println(t.name());
    }
}

Depuis le dossier qui contient Card.java, lancez javac Card.java. Quand accolades et parenthèses correspondent, javac n'écrit aucune ligne propre. Puis lancez java Card — pas java Card.java et pas java Tag. Gardez une seule classe publique pour que le nom de lancement corresponde à Card. Le record Tag reste package-private dans le même fichier.
Parcourez l'exécution une fois. Java démarre à Card.main. new Tag("oak") stocke le composant. t.name() renvoie "oak". println écrit oak. Rien n'appelle stream(). Rien n'appelle forEach. Rien ne lit args[0].
Dites la règle débutant pendant que vous regardez l'écran : record nomme le type et ses composants ; l'accessor porte le nom du composant ; construisez avec new. N'inventez pas de démos JUnit sur cette page. JUnit attend la leçon optionnelle suivante. Ne remplacez pas le record par une longue classe écrite à la main pleine de getters dans le fichier pédagogique — gardez l'en-tête record.
Si vous voyez encore OAK puis PINE depuis un fichier streams Pipe restant, passez à Card et gardez t.name(). Si javac se plaint de deux types publics, gardez seulement Card public et laissez record Tag sans public.

Deux composants, deux impressions

Gardez la même classe publique Card. Élargissez le record à deux composants :
record Tag(String name, int n) {}
Tag t = new Tag("oak", 3);
System.out.println(t.name());
System.out.println(t.n());
Recompilez avec javac Card.java et lancez java Card. L'écran montre oak, puis 3. Chaque composant obtient un accessor du même nom. L'ordre dans l'en-tête correspond aux arguments du constructeur.

Card record Tag prints oak then 3

java
record Tag(String name, int n) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak", 3);
        System.out.println(t.name());
        System.out.println(t.n());
    }
}

Parcourez l'exécution une fois. name() renvoie "oak". n() renvoie 3. Gardez les deux démos comme deux formes pédagogiques. D'abord prouvez un composant. Puis prouvez deux composants. Les deux formes partagent un record package-private à côté de Card public.
Si vous inversez les arguments du constructeur, les valeurs atterrissent dans les mauvais composants. Gardez "oak" en premier et 3 en second dans le fichier pédagogique que vous conservez.

Habitudes record

Gardez l'en-tête compact et les accessors ensemble pendant que vous pratiquez.

📊 Habitudes record pour Card

Habitude Forme Contrôle débutant
Déclarer record Tag(String name) {} composants dans l'en-tête
Construire new Tag("oak") arguments suivent l'ordre des composants
Lire t.name() nom d'accessor = nom du composant
Deux champs record Tag(String name, int n) {} chaque composant a son accessor
Classe publique public class Card lancer avec java Card, pas java Tag

Records n'est pas Streams et pas JUnit

Streams a filtré et transformé des valeurs de liste dans un pipeline. Records tient un ensemble fixe de composants dans un type compact. JUnit vérifiera le comportement avec des tests sur une page optionnelle ultérieure. Ne mélangez pas ces trois rôles dans un seul fichier débutant aujourd'hui.
oak ici est une valeur de composant record renvoyée par name(). Ce n'est pas un résultat de filter stream et pas une visite Lambda forEach seule. Quand un fichier Pipe restant affiche encore des mots mappés en majuscules, laissez-le comme historique et gardez la ligne t.name() de Card.
Sans le mot-clé record, l'en-tête compact de cette page disparaît. Sans des arguments de constructeur alignés, javac rejette l'appel. Gardez l'en-tête et la ligne new alignées pendant que vous pratiquez chaque démo. Gardez les annotations JUnit hors de cette page jusqu'à cette leçon, même si vous avez déjà vu un titre de test ailleurs sur le parcours optionnel. Préférez la forme record courte pour que l'écran reste lié à name() et n() à chaque lecture attentive du fichier pédagogique.

Vérifications du dossier avant JUnit

Listez le dossier après une compilation réussie. Vous devez voir Card.java et Card.class ensemble, et en général un Tag.class pour le record. Modifiez la source, enregistrez, lancez javac Card.java, puis java Card. Un .class obsolète peut montrer un ancien écran d'une ligne si vous sautez la compilation après avoir ajouté n.
Si javac se plaint de classes publiques en double, gardez seulement Card public. Si l'écran montre Tag[oak] au lieu de oak, vous avez affiché tout le record — gardez l'impression pédagogique sur t.name(). Si rien ne s'affiche, confirmez que main appelle encore println.
Ne collez pas Pipe stream().map dans Card. Ne collez pas Cue forEach comme remplacement de l'histoire record. Le travail records optionnel, c'est un type compact avec accessors.

Avant JUnit optionnel

Vous pouvez garder record Tag(String name) {}, construire new Tag("oak"), afficher t.name() comme oak, puis utiliser record Tag(String name, int n) {}, afficher oak et 3. Compilez avec javac Card.java et lancez java Card. Le tableau sépare déclarer, construire et lire. La page optionnelle suivante est JUnit.
Gardez les démos Card pour une paire records claire. Gardez les fichiers streams Pipe hors de cette page quand vous pratiquez les records. Gardez les fichiers lambda Cue hors de cette page quand vous pratiquez les records. Gardez le travail JUnit hors de cette page jusqu'à cette leçon. Ces habitudes sont le point de contrôle avant la suite. Quand l'écran un champ montre oak ou l'écran deux champs montre oak puis 3, Records a fait son travail pour cette leçon et vous êtes prêt pour JUnit si vous continuez le parcours optionnel.
Un dernier passage dans le dossier : un seul Card public, record Tag package-private, arguments de constructeur alignés, impressions d'accessors, pas d'attente Scanner, pas de pipeline stream requis. Lancez encore javac Card.java et java Card sur la démo ouverte. Si l'écran montre toujours oak ou oak puis 3, la forme Records est solide et le cours peut passer à JUnit optionnel sur la page suivante. Préférez une habitude record claire par lecture pour que chaque passage enseigne la même carte.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
5
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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