0Pricing
Java Academy · Leçon

Motifs d’enregistrements

Déstructurez des enregistrements dans des motifs

Motifs d’enregistrements est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Motifs d'enregistrement

Un motif d'enregistrement reconnaît un enregistrement et le déstructure, en liant ses composants à des variables en une seule étape. Plus besoin d'appeler chaque accesseur manuellement.

Un enregistrement à déstructurer

Commencez par un enregistrement simple. Ses composants sont les éléments qu'un motif peut extraire.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Point p = new Point(3, 4);
        System.out.println(p.x() + ", " + p.y());
    }
}

Déstructuration avec instanceof

Au lieu d'écrire instanceof Point p puis p.x(), écrivez instanceof Point(int x, int y) pour lier directement x et y.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Object obj = new Point(3, 4);
        if (obj instanceof Point(int x, int y)) {
            System.out.println("Sum: " + (x + y));
        }
    }
}

Les composants deviennent des variables locales

Les noms placés dans le motif (x, y) sont de nouvelles variables locales contenant les valeurs des composants de l'enregistrement. Vous choisissez ces noms ; ils ne doivent pas nécessairement correspondre à ceux de l'enregistrement.

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Object obj = new Point(10, 20);
        if (obj instanceof Point(int a, int b)) {
            System.out.println("a=" + a + " b=" + b);
        }
    }
}

Utiliser var dans les motifs

Vous pouvez écrire var pour un composant afin de laisser le compilateur en déduire le type, ce qui est pratique lorsque les types sont longs.

public class Main {
    record Pair(String key, Integer value) {}

    public static void main(String[] args) {
        Object obj = new Pair("age", 30);
        if (obj instanceof Pair(var key, var value)) {
            System.out.println(key + " = " + value);
        }
    }
}

Motifs dans une instruction de sélection

Les motifs d'enregistrement fonctionnent également dans une instruction de sélection, dont les branches décrivent ainsi la forme des données.

public class Main {
    record Point(int x, int y) {}

    static String classify(Object obj) {
        return switch (obj) {
            case Point(int x, int y) when x == y -> "on diagonal";
            case Point(int x, int y) -> "at " + x + "," + y;
            default -> "not a point";
        };
    }

    public static void main(String[] args) {
        System.out.println(classify(new Point(5, 5)));
        System.out.println(classify(new Point(1, 2)));
    }
}

Correspondance avec inférence de type

Les types des composants du motif doivent être compatibles avec les types déclarés de l'enregistrement. Utiliser le type exact ou var est le choix le plus sûr.

Combiner avec des gardes

Ajoutez une garde when après un motif d'enregistrement pour ne retenir la correspondance que lorsque les valeurs déstructurées satisfont une condition.

public class Main {
    record Temperature(double celsius) {}

    static String alert(Object o) {
        if (o instanceof Temperature(double c) && c > 38.0) {
            return "fever: " + c;
        }
        return "normal";
    }

    public static void main(String[] args) {
        System.out.println(alert(new Temperature(39.5)));
        System.out.println(alert(new Temperature(36.6)));
    }
}

Un accès aux données plus clair

Les motifs d'enregistrement sont particulièrement utiles lorsque vous n'avez besoin que de quelques champs. Ils éliminent une succession d'appels d'accesseurs et rendent les données pertinentes évidentes à l'endroit de la correspondance.

Valeur nulle et motifs d'enregistrement

Comme tous les motifs instanceof, un motif d'enregistrement est faux pour une valeur nulle. La déstructuration n'a lieu qu'une fois que la valeur est confirmée comme étant une instance non nulle de l'enregistrement.

Un exemple pratique

Déstructurez les composants pour calculer directement une valeur.

public class Main {
    record Rectangle(int width, int height) {}

    static int area(Object o) {
        if (o instanceof Rectangle(int w, int h)) {
            return w * h;
        }
        return 0;
    }

    public static void main(String[] args) {
        System.out.println(area(new Rectangle(4, 5)));
        System.out.println(area("not a rect"));
    }
}

Vérification rapide

Testez votre compréhension des motifs d'enregistrement.

Récapitulatif

Vous avez appris les motifs d'enregistrement.

  • Ils testent le type d'un enregistrement et déstructurent ses composants en une seule fois.
  • Les noms des composants sont de nouvelles variables locales que vous choisissez ; var en déduit les types.
  • Ils fonctionnent avec instanceof comme avec une instruction de sélection.
  • Comme tous les motifs, ils sont faux pour une valeur nulle.

Questions Fréquemment Posées

La leçon « Motifs d’enregistrements » est-elle gratuite ?

Oui — le texte complet de « Motifs d’enregistrements » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Motifs d’enregistrements » ?

Déstructurez des enregistrements dans des motifs Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Motifs d’enregistrements » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Correspondance de motifs avec instanceof
  2. Motifs d’enregistrements
  3. Motifs d’enregistrements imbriqués
  4. Motifs dans switch
← Retour à Java Academy