Junior
Qu'est-ce que les expressions lambda en Java?
sobes.tech IA
Réponse de l'IA
Une expression lambda est une forme concise de fonction anonyme, qui implémente les méthodes d'une interface fonctionnelle.
Structure : (paramètres) -> { corps de l'expression }.
| Partie | Description | Exemples |
|---|---|---|
paramètres |
Liste de paramètres, peut être vide. Les types peuvent ne pas être spécifiés (sont inférés). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Opérateur flèche (arrow operator). Sépare les paramètres du corps. | -> |
corps de l'expression |
Corps de la lambda. Peut être une expression ou un bloc de code. | x * x<br>{ System.out.println(x); } |
Exemples d'utilisation :
-
Implémentation d'interfaces fonctionnelles :
import java.util.function.Consumer; // Avant, implémentation traditionnelle avec classe anonyme Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Classe anonyme traditionnelle"); // En utilisant une expression lambda Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Expression lambda"); -
Travailler avec l'API Streams :
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Filtrer les nombres pairs avec lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Affiche : [2, 4] // Transformer les nombres en leurs carrés List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Affiche : [1, 4, 9, 16, 25]
Avantages :
- Réduction du code par rapport aux classes anonymes.
- Amélioration de la lisibilité pour des opérations simples.
- Facilité d'utilisation avec l'API Streams et autres API orientées programmation fonctionnelle.