Maîtriser les expressions lambda Java 8 : Guide de la programmation fonctionnelle
Les expressions lambda (Java 8) sont la fonctionnalité phare. Elles permettent la programmation fonctionnelle et simplifient grandement le développement.
Syntaxe
paramètres -> corps_expression
Caractéristiques
- Type optionnel : le compilateur infère le type des paramètres.
- Parenthèses optionnelles : pour un seul paramètre.
- Accolades optionnelles : si le corps est une seule expression.
returnoptionnel : retour implicite pour expression unique.
Exemples variés
// Avec types déclarés
MathOperation addition = (int a, int b) -> a + b;
// Sans types (inférence)
MathOperation subtraction = (a, b) -> a - b;
// Avec bloc et return explicite
MathOperation multiplication = (int a, int b) -> { return a * b; };
// Expression unique sans accolades ni return
MathOperation division = (int a, int b) -> a / b;
// Sans parenthèses (un paramètre)
GreetingService greet1 = message -> System.out.println("Hello " + message);
// Avec parenthèses
GreetingService greet2 = (message) -> System.out.println("Hello " + message);
Interfaces fonctionnelles utilisées
interface MathOperation { int operation(int a, int b); }
interface GreetingService { void sayMessage(String message); }
Exécution
System.out.println("10 + 5 = " + operate(10, 5, addition)); // 15
System.out.println("10 - 5 = " + operate(10, 5, subtraction)); // 5
System.out.println("10 x 5 = " + operate(10, 5, multiplication)); // 50
System.out.println("10 / 5 = " + operate(10, 5, division)); // 2
greet1.sayMessage("Mahesh"); // Hello Mahesh
greet2.sayMessage("Suresh"); // Hello Suresh
Portée des variables (capture)
Une lambda peut accéder aux variables final ou effectively final (assignées une seule fois) de la portée englobante. Réassigner → erreur de compilation.
Exemple
final static String salutation = "Hello! ";
GreetingService gs = message -> System.out.println(salutation + message);
gs.sayMessage("Mahesh"); // Hello! Mahesh
Les lambdas éliminent le besoin de classes anonymes verbeuses pour les interfaces fonctionnelles (une seule méthode abstraite).
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Comprendre les expressions, instructions et blocs en Java
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code