14 03 Expression lambda

Bienvenue dans ce cours sur les expressions lambda, ajoutées au langage Java pour simplifier la programmation fonctionnelle. Une lambda est proche d'une méthode anonyme, mais beaucoup plus concise : elle peut être écrite directement dans le corps d'une autre méthode et passée comme paramètre. La syntaxe générale utilise l'opérateur fléché -> : (paramètres) -> expression ou (paramètres) -> { instructions }.

Syntaxe et utilisations

Lorsqu'il n'y a qu'un seul paramètre, on peut omettre les parenthèses, par exemple n -> n * 2. Avec plusieurs paramètres, les parenthèses deviennent obligatoires : (a, b) -> a + b. Si le corps contient plusieurs instructions, on les place entre accolades. Cette flexibilité permet d'écrire du code beaucoup plus lisible que les classes anonymes équivalentes.

Voyons un exemple concret. On crée une liste de nombres avec List<Integer> numbers = new ArrayList<>(), puis on ajoute quelques valeurs. Pour les afficher, on utilise numbers.forEach(n -> System.out.println(n)). Ici, forEach prend une expression lambda en paramètre et l'applique à chaque élément de la liste, ce qui remplace une boucle for classique tout en restant très lisible.

On peut aussi stocker une expression lambda dans une variable typée par une interface fonctionnelle. Java fournit par exemple l'interface Consumer<T> : Consumer<Integer> printer = n -> System.out.println(n). Le bloc lambda est alors mémorisé dans printer et peut être réutilisé : numbers.forEach(printer) produit le même affichage. Cette possibilité de manipuler des comportements comme des valeurs est l'apport central des lambdas.

En résumé

Les expressions lambda en Java permettent de simplifier la syntaxe comparée aux classes anonymes traditionnelles en implémentant du code directement. La syntaxe varie selon le nombre de paramètres : sans paramètres, un seul paramètre ou plusieurs paramètres entre parenthèses. Elles peuvent être utilisées directement dans des boucles ou stockées dans des variables via les interfaces fonctionnelles comme Consumer.

Points clés

  • Les expressions lambda simplifient l'utilisation des blocs de code par rapport aux approches précédentes
  • La syntaxe s'adapte au nombre de paramètres : pas de parenthèses pour un paramètre unique, parenthèses obligatoires pour plusieurs
  • Elles permettent une implémentation directe du code sans structure complexe
  • Peuvent être utilisées dans des boucles for pour traiter des éléments et afficher leurs valeurs
  • Peuvent être stockées dans des variables grâce aux interfaces fonctionnelles comme Consumer de Java

Questions fréquentes

Qu'est-ce qu'une expression lambda en Java ?

Une expression lambda est une syntaxe simplifiée pour implémenter du code directement, sans avoir besoin de structures complexes. Elle permet de passer un bloc de code comme paramètre de manière concise.

Comment la syntaxe change-t-elle selon le nombre de paramètres ?

Pour un seul paramètre, la syntaxe est directe sans parenthèses. Pour plusieurs paramètres, il faut les mettre entre parenthèses suivi du bloc de code correspondant.

Peut-on stocker une expression lambda dans une variable ?

Oui, on peut stocker une expression lambda dans une variable en utilisant une interface fonctionnelle comme Consumer, ce qui permet de la réutiliser et de l'afficher ultérieurement.