Chapitre10 Lambda Expressions Java 8
Chapitre10 Lambda Expressions Java 8
Chapitre10 Lambda Expressions Java 8
2
Lambda Expression
3
Lambda Expression: Définition
Lambdas expression est considérée comme la plus grosse nouveauté de
Java 8.
C’est une forme de méthode, plus compacte qu’une méthode standard, pour
laquelle le nom est implicite et les paramètres peuvent être omis, tout
comme leur type ou une valeur de retour.
4
Lambda Expression: Définition
Lambda Expression est une manière simplifiée pour l'implémentation d'une
interface qui n'a qu'une seule méthode abstraite (SAM)..
Lambda Expressions sont des fonctions anonymes
5
Lambda Expression: Exemple
Supposons que nous avons une interface fonctionnelle :
6
Lambda Expression: Exemple
🡺 Pour créer un Objet anonyme de MyInterface il faut écrire
Le compilateur connait que l’interface une seule méthode abstraite 🡺 pas besoin d’écrire son nom
11
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes
Le compilateur connait la seule méthode abstraite, donc il connait son accesseur, son type de retour 🡺
pas besoin de les écrire 12
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes
Les types « int » de a et b sont optionnels puisque le compilateur connait les type des arguments
14
Lambda Expression: Syntaxe
Lambda Expression s’écrit d’une façon assez simple en suivant quelques
régles :
• Supplier
L’interface "Supplier" produise un résultat d'un type donnée.
Contrairement à l’interface "Function", "Supplier" n’accepte pas les
arguments. La méthode abstraite de cette interface est "get()".
16
Lambda Expression: Appliquons
• Consumer
L’interface "Consumer" représente une opération qui accepte un seul argument et ne renvoie aucun
résultat. La méthode abstraite de cette interface est "accept(Object)".
• Predicate
L’interface "Predicate" représente une opération qui accepte un seul argument et renvoie un résultat
de type "Boolean". La méthode abstraite de cette interface est "test(Object)".
17
Lambda Expression: Appliquons
• Comparator
L’interface "Comparator" est bien connue dans les anciennes versions du Java. C’est une fonction de
comparaison, qui impose un ordre total sur certains objets de collection via sa méthode abstraite
"compare(T o1, T o2)".
18
Lambda Expression: Appliquons
• UnaryOperator
Représente une opération sur un opérande unique qui produit un résultat du même type que son opérande.
C’est une spécialisation de l’interface "Function" dans le cas où l'opérande et le résultat sont du même type.
L’interface abstraite de cette interface est "apply(Object)".
19
Lambda Expression: Appliquons
• BiFunction
Représente une fonction qui accepte deux arguments et produit un résultat. C’est la
spécialisation de deux arités de l’interface "Function". La méthode abstraite de cette interface
est "apply(T t, U u)".
20
Lambda Expression: Appliquons
• BinaryOperator
Représente une opération à deux opérandes de même type, qui produise un résultat du même
type que les opérandes. C’est une spécialisation de l’interface "BiFunction" dans le cas où les
opérandes et le résultat sont tous du même type.
21
Merci pour votre attention
22