• Home
  • Docker
  • Kubernetes
  • LLMs
  • Java
  • Ubuntu
  • Maven
  • Big Data
  • Archived
Java | Expressions Lambda
  1. Expressions Lambda
  2. Utilisation des expressions lambda avec les collections

  1. Expressions Lambda
    Une expression lambda permet de définir un block de code qui peut être assigné à une référence d'une méthode.

    Une expression lambda peut être utilisée dans plusieurs context:
    • Initialiser une variable ou un tableau.

    • Arguments de méthodes ou de constructeurs

    • Valeur de retour de méthodes

    • Expression conditionnelle "?:"

    La syntaxe d'une expression lambda est comme suit: paramètres -> implémentation

    Le caractère -> sépare les paramètres de l'implémentation de l'expression lambda.

    • Les paramètres définissent les variables qui vont être utilisées comme argument lors de l'execution de l'expression lambda.

      Il n'est pas nécessaire de specifier le type des paramètres lorsque le compilateur peut inférer le type dépendamment du context d'utilisation de l'expression lambda.

      Le type peut être soit omis pour tous les paramètres, soit spécifié pour tous les paramètres. Une erreur de compilation est lancée si le type est spécifié pour certains paramètres, mais pas pour tous.

      Il est possible de définir une expression lambda qui n'accepte pas de paramètres.

      Les parenthèses () ne sont pas obligatoires lorsque l’expression lambda n’accepte qu’un seul paramètre.

      Exemples:
      • types explicites : (Integer i, Integer j) -> i + j;
      • types inférés : (i, j) -> i + j;
      • pas de paramètres : () -> Math.random();
      • pas de parenthèses : i -> i;

    • L'implementation définit une expression ou un bloc d'instructions.

      Exemples:
      • expression : (String s) -> s.toUpercase();
      • bloc d'instructions : (String s) -> { return s.toUpercase(); }

    • L’expression lambda peut retourner une valeur dont le type est inféré automatiquement par le compilateur.

      Exemples:
      • expression : () -> "hello!";
      • bloc d'instructions : () -> { return "hello!"; }
      • aucune valeur retournée : () -> System.out.println("Hello!");
      • une autre expression lambda: x -> y -> x + y;

    L'implementation d'une expression lambda est similaire au code habituelle (bloc d'instructions) qu'on écrit pour implementer des méthodes. Cependant quelques restrictions sont à respecter, comme l'incapacité d'écrire des instructions continue/break à moins que ca soit à l'intérieur d'une boucle. Aussi il n'est pas possible de lancer des exceptions vérifiées par le compilateur (checked exceptions).

    Le code d’une expression lambda peut référencer des variables locales ansi que des variables d’instances et des variables de classe (statique). Typiquement la variable local doit être déclarée avec le modificateur final mais ce n’est pas une nécessité tant que la variable est implicitement utilisée comme une variable finale.

    Les expressions lambda peuvent être assignées à des références des interfaces declarant une seule méthode.
    Exemple :
  2. Utilisation des expressions lambda avec les collections
    • forEach
      L'interface java.lang.Iterable définit une implementation par défaut de la méthode forEach.

      La méthode forEach définit un paramètre de type Consumer (interface fonctionnelle) qui permet d'appliquer une action spécifique sur chaque élément d'une collection.

      L'interface java.util.Collection étend l'interface Iterable et donc la méthode forEach est disponible pour toute les implementations de l'interface Collection.

      Exemple:
© 2025  mtitek