Tutoriel java 8 : votre première expression Lambda

/////Tutoriel java 8 : votre première expression Lambda

=/tutoriel-java-n17-expression-lambda-java-8-premiers-pas/


java-9.jpg 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

tutoriel-java-8-expression-lambdas-1

 

tutoriel-java-8-expression-lambdas-2

 

tutoriel-java-8-expression-lambdas-3

 

tutoriel-java-8-expression-lambdas-4

 

tutoriel-java-8-expression-lambdas-5

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 :

tutoriel-java-8-expression-lambdas-6

 

tutoriel-java-8-expression-lambdas-7

 

tutoriel-java-8-expression-lambdas-8

 

tutoriel-java-8-expression-lambdas-9

REMARQUE : Tout ça…

tutoriel-java-8-expression-lambdas-10

…pour ça !

tutoriel-java-8-expression-lambdas-11

Partie 2 : avec expression lambda

En java 8, on peut l’écrire de façon plus élégante :

tutoriel-java-8-expression-lambdas-12

Analysez le résultat entre les deux techniques

tutoriel-java-8-expression-lambdas-13

Partie 3 : bloc de code

Le code précédent est strictement équivalent à

tutoriel-java-8-expression-lambdas-14

Ce qui permet d’ajouter du code

tutoriel-java-8-expression-lambdas-15

Pour un résultat suivant :

tutoriel-java-8-expression-lambdas-16

 Expliquez

Partie 4 : valeur de retour

tutoriel-java-8-expression-lambdas-17

 

tutoriel-java-8-expression-lambdas-18

tutoriel-java-8-expression-lambdas-19

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 !

java-9.jpg
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 !

2018-02-01T08:31:23+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java