Java 8 : Les nouveautés

Remplacer les interfaces SAM

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Les expressions lambda sont utilisées pour remplacer les interfaces SAM (interfaces à une seule méthode).

Transcription

Dans cette vidéo, nous allons montrer le rapport entre les interfaces dites SAM et les Lambda expressions. Alors, les interfaces dites SAM sont tout simplement des interfaces qui attendent une seule méthode en fait. Simple Abstract Methode. Donc imaginons vais appeler Déclencheur. Et cette interface déclencheur propose une méthode : public void Déclenche et, elle attend en paramètre, un message. Donc suivant les conventions Java, les méthodes commenceront par des minuscules là où les interfaces et les classes commencent par des majuscules. Voilà donc une interface SAM, c'est un exemple. interface SAM. single abstract Methode. En réalité, quand on utilisera ce genre d'interface, ce qui nous intéresse réellement c'est la méthode qui est là, qui est prévue, la méthode déclenche. Donc si j'ai besoin maintenant, pour une raison quelconque, la raison quelconque ici ça va être tout simplement de faire un appel. AfficheMessage. Voilà, et ici en paramètre, il faut que je lui passe, cette méthode afficheMessage que je définis juste à côté du main. AfficheMessage. Il faut que je lui passe donc, Un objet déclencheur. Et ce que fait cet afficheMessage, c'est qu'il fait dec.déclenche en passant un message : coucou les lambda. Alors pour arriver à faire fonctionner ce code, ce qu'il me faut évidemment c'est ici passer un objet d'un type déclencheur. Donc première possibilité, je viens créer une classe : déclencheur Impl par exemple. Ce déclencheur Impl prétend Implémenter déclencheur. Donc Implement bien sûr. Donc ici bien sûr alt entrée pour voir qu'on me propose d'implémenter les méthodes abstraites. On me propose ici l'implémentation de la méthode. En l'occurrence cette implémentation du déclencheur pourrait tout simplement faire appel à système.out. println du message. Modulo donc une petite chaîne complémentaire. Alors je crée une classe déclencheur Impl qui implémente déclencheur. Je viens écrire la méthode donc dans toute sa syntaxe complète, donc là on est en Java 7 en gros, tout ça parce que je veux respecter l'interface déclencheur. Et ici ce que je vais faire, c'est venir créer un objet Déclencheur impl. Me voilà donc en train de manipuler du code Java 7 pour respecter cette interface dite SAM, (Single Abstract Methode) je me vois obligé de créer une classe et d'implémenter l'objet en question. Une des autres possibilités finalement c'est d'utiliser une lambda expression. Je dis que en fait plutôt que d'aller créer une classe, je dis que pour une chaîne S, je vais régler le problème en écrivant ce code System.out.println de S, je le ferme en expression. Et ça c'est donc une expression lambda qui remplacera avec avantage la création de l'objet qui est lui-même finalement l'instance d'une classe que j'ai créée préalablement. Alors là on est vraiment dans l' expression la plus simple de la lambda expression, si je puis dire puisqu'on a un seul paramètre. Le corps de la méthode est extrêmement simple. Donc ce genre de situation, vous allez le retrouver assez fréquemment en particulier donc dans tout ce qui est Java swing. Donc je peux d'ailleurs me permettre peut-être de créer rapidement une classe qui serait une frame, ma frame par exemple, qui hérite de J frame. Alors vous connaissez ce genre de code que vous retrouvez abondamment dans tout ce qui est IHM. J frame fait partie de Java swing, JavaX Swing J frame, c'est son nom complet. Vous savez que pour construire une IHM façon swing vous écririez ce genre de code terminant par pack. Vous auriez construit des boutons Jbutton par exemple Button = new JButton On va l'appeler "click me". Allez tant qu'à faire on va le faire en français "clique moi". Voilà. Et ici pour introduire la callback, je vais normalement faire New ActionListener, etc. Donc je peux utiliser les classes anonymes, c'est une autre possibilité plutôt que de faire une classe qui implémente ActionListener, je peux aussi écrire new ActionListener. Je pense que vous connaissez ce genre de code. Et ici en fait j'implémente pour ActionListener. Alt entrée pour qu'il me fasse l'import, puis alt entrée pour qu'il implémente la méthode. Vous constatez qu'ActionListener est une SAM. Il n'y a qu'une seule méthode d'accord, donc ici je mets la callback. Je mets la fonction de rappel, donc tout le monde connait cette notion de classe anonyme ici, donc une fonction de rappel qui contiendrait le system.out.println. "J'ai été cliqué" voilà par exemple. Parfait, eh bien en fait, ce code là peut être remplacé par button.addActionListener. Et là je mets directement l'équivalent du Action perform. Autrement dit je prends un événement, et cet événement, je lui associe, alors là plutôt que System.err, je prendrai plutôt le System.out. Il m'a généré le code automatiquement System.out.println. Et c'est exactement le code que je place ici. Autrement dit cette lambda expression remplace complètement tout le code qui est là, alors je pense que la notion d'économie en termes de code. Alors je ne milite pas pour avoir un code économe, d'accord ? En l'occurrence, dans la mesure où je peux me passer de ce code des classes anonymes qui est tout de suite un code obscur, eh bien j'utilise avec efficience ce genre de syntaxe, qui est donc l'expression lambda.

Java 8 : Les nouveautés

Découvrez les nouveautés introduites par la version 8 de Java. Voyez les expressions lambda, les références de méthodes, les méthodes par défaut dans les interfaces, etc.

1h44 (21 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Spécial abonnés
Date de parution :17 août 2015

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !