Leçon 48 : Programmation fonctionnelle en Java : Expressions Lambda
Java 8 a introduit d'importantes fonctionnalités de programmation fonctionnelle, notamment les Expressions Lambda, qui simplifient le codage en fournissant un moyen concis de représenter des fonctions anonymes.
1. Qu'est-ce qu'une Expression Lambda ?
C'est un court bloc de code qui prend des paramètres et retourne une valeur. Elle fournit essentiellement l'implémentation d'une méthode définie par une interface fonctionnelle.
Syntaxe : (liste de paramètres) -> { corps de la fonction }
2. Interfaces fonctionnelles
Une interface fonctionnelle est toute interface qui contient exactement une méthode abstraite. Les expressions lambda ne peuvent être utilisées que dans des contextes où elles implémentent une interface fonctionnelle.
java // Exemple d'une interface fonctionnelle (provenant de java.util.function) @FunctionalInterface interface MyConverter<T, R> { R convert(T from); }
3. Exemples de syntaxe Lambda
A. Syntaxe standard (Multi-ligne)
java MyConverter<String, Integer> stringToInt = (String s) -> { return Integer.parseInt(s); }; int num = stringToInt.convert("500");
B. Syntaxe simplifiée (Expression unique)
Si le corps est une expression unique, vous pouvez omettre les accolades, le mot-clé return et les types de paramètres (inférence de type).
java
// Tri de liste à l'aide d'une classe anonyme traditionnelle :
Collections.sort(list, new Comparator
// Tri de liste à l'aide d'une Expression Lambda : Collections.sort(list, (a, b) -> a.compareTo(b));
4. Références de méthode (Method References)
Un raccourci pour une expression lambda qui appelle simplement une méthode existante. Elles rendent le code encore plus propre.
java // Lambda : list.forEach(item -> System.out.println(item));
// Référence de méthode équivalente : list.forEach(System.out::println);