=/tutoriel-java-n17-expression-lambda-java-8-premiers-pas/
Avec Objis, spécialiste Java depuis 2005, découvrez l’opérateur Lamba (->) introduit dans Java 8. Comprenez la notion d’expression Lambda. Constatez par la pratique que l’expression lambda simplifie la lecture et la maintenance du code impliquant une classe anonyme.
ASTUCE –> Soyez informé de la mise à jour ou création de tutos sur objis.com.
Auteur
Douglas MBIANDOU. Président Objis . Concepteur formation ‘Nouveautés Java 8 et 9’
Prérequis
Développer en Java
Objectifs
Constater la difficulté de coder ‘simplement’ le tri d’une liste d’objets avant Java 8 : solution par (classe dédiée ou classe anonyme)
Comprendre l’opérateur lambda (->)
Comprendre le lien entre Expression Lambda et classe anonyme et interface fonctionnelle
Solution avec Java 8 via Interface fonctionnelle Comparator et Expression Lambda
Introduire les Streams et la combinaison Streams / Expression lambda
Programme
Contexte et définitions
Partie 1 : avant les expressions lambdas
Partie 2 : avec expression lambda
Partie 3 : bloc de code
Partie 4 : valeur de retour
Conclusion
Votre avis nous interesse
Durée
25 min
Contexte : le besoin de référence vers une méthode
Jusqu’à Java 7, il n’existait que deux types de références : des références vers des valeurs primitives, et des références vers des instances d’objets.
int i = 37; // Référence vers une valeur primitive
String s = « toto »; // Référence vers une instance
A partir de Java 8 , il est possible d’avoir une référence vers…une méthode !
Dans d’autres langages (Groovy, Scala,…), il était déjà possible d’établir des références vers des ‘closures’, c’est-à-dire des blocs de code anonymes.
Une référence de ce type peut ensuite être utilisée en tant que champ d’une classe ou en paramètre d’une méthode.
En Java, qui ne disposait pas de cette facilité, la technique qui s’en rapproche le plus consiste à définir une interface décrivant la fonctionnalité souhaitée, puis à instancier une classe (souvent anonyme) implémentant la fonctionnalité. L’instance obtenue peut alors être affectée à une référence et/ou être passée en paramètre d’une méthode: cette façon de faire est très verbeuse
De ce fait, Oracle s’est décidé à intégrer les closures dans le langage.
DEFINITION : une expression Lambda est l’implémentation d’une closure en java.
SYNTAXXE : une closure se conçoit comme une méthode anonyme. A ce titre, elle peut accepter des paramètres et retourner un résultat.
Elle peut prendre deux formes :
(paramètres) -> expression_simple
(paramètres) -> bloc_d’instructions
4 exemples d’expressions lambda
Exemple 1
(int x) -> x * 10
cette expression prend un paramètre x de type int, et renvoie 10 fois sa valeur. Notez l’absence du mot-clé return : la valeur de l’expression est automatiquement renvoyée.
Exemple 2
(String texte) -> System.out.println(texte);
La deuxième expression accepte un paramètre de type String mais ne renvoie rien.
Exemple 3
(int x) -> System.out.println(texte);
return x * 10;
cette expression est une variante de la première, qui utilise un bloc d’instructions. Cette fois, le mot-clé return est nécessaire.
Exemple 4
() -> 85
Enfin, la quatrième expression ne prend aucun paramètre, et renvoie la constante 85.
Partie 1 : Avant les expressions lambdas
Avant Java 8, pour gérer ce type de situation , 2 possibilités :
Soit une classe implémentant déja l’interface existe déjà et on l’instancie et l’utilise
Soit aucune classe n’existe et on passe par une classe anonyme :
REMARQUE : Tout ça…
…pour ça !
Partie 2 : avec expression lambda
En java 8, on peut l’écrire de façon plus élégante :
Analysez le résultat entre les deux techniques
Partie 3 : bloc de code
Le code précédent est strictement équivalent à
Ce qui permet d’ajouter du code
Pour un résultat suivant :
Expliquez
Partie 4 : valeur de retour
CONCLUSION
Dans ce tutoriel vous avez découvert le contexte d’arrivée de l’expression lambda et des exemples d’utilisation.
Professionnels : maîtrisez les nouveautés Java 8 et 9 !
A travers notre nouvelle formation Nouveautés Java 8 et 9 (durée 4 jours) conçue par l’auteur de ce tutoriel, découvrez par la pratique le nouveau système de Modules Java 9 ainsi que des caractéristiques de Java 8 (Streams, Lambda, Optional…).
Un sérieux atout pour votre employabilité et l’évolution de votre carrière professionnelle !