DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Java Zone»Comment utiliser la correspondance de modèle pour instanceof à partir de JDK16
    Java Zone

    Comment utiliser la correspondance de modèle pour instanceof à partir de JDK16

    octobre 17, 2021
    Comment utiliser la correspondance de modèle pour instanceof à partir de JDK16
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    La nouvelle version LTS (version 17) de Java est sortie en septembre. Et depuis la précédente LTS (version 11), de nombreuses fonctionnalités intéressantes ont été ajoutées. L’un des plus cool est « Pattern Matching for instanceof« .

    Jusqu’à Java 15, lorsque nous vérifiions si un objet est une instance d’une classe particulière, le compilateur n’infligeait pas le type de la variable, même si l’objet passait la condition. À cause de cela, nous devions toujours lancer après le instanceof Chèque.

    Si nous essayons de compiler le code suivant sans transtypage :

    public class InstanceOfDemo {
        public static void main(String[] args) {
            Number n = 42;
            if (n instanceof Integer) {
                System.out.println(n.compareTo(21));
            }
        }
    }

    L’erreur suivante se produira :

    InstanceOfDemo.java:6: error: cannot find symbol
                System.out.println(n.compareTo(21));
                                    ^
      symbol:   method compareTo(int)
      location: variable n of type Number
    1 error
    error: compilation failed

    Cela se produit parce que le compareTo méthode est déclarée par Integer et pas Number.

    Ainsi, lorsque nous convertissons la variable en Integer, il compile.

    public class InstanceOfDemo {
        public static void main(String[] args) {
            Number n = 42;
            if (n instanceof Integer) {
                System.out.println(((Integer)n).compareTo(21));
            }
        }
    }

    $ java InstanceOfDemo.java
    1

    À partir de Java 16 et des versions plus récentes, nous n’avons plus besoin de transtyper la variable. Nous déclarons simplement une nouvelle variable dans le instanceof déclaration.

    public class InstanceOfDemo {
        public static void main(String[] args) {
            Number n = 42;
            if (n instanceof Integer i) {
                System.out.println(i.compareTo(21));
            }
        }
    }

    Notez la nouvelle variable i dans l’extrait ci-dessus.

    C’est ça! La nouvelle fonctionnalité de Java 16 élimine le instanceof-et-castez l’idiome de notre code.

    Si vous souhaitez en savoir plus sur le JEP 394, vous pouvez consulter sa page ici.

    Si vous avez des questions, n’hésitez pas à laisser un message dans la session de commentaires.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.