Tutoriels Java

Java ACCUEIL Introduction à Java Java Démarrer Syntaxe Java Commentaires Java Variables Java Types de données Java Conversion de type Java Opérateurs Java Chaînes Java Mathématiques Java Booléens Java Java Si... Sinon Commutateur Java Java While Boucle Java pour la boucle Java Pause/Continuer Tableaux Java

Méthodes Java

Méthodes Java Paramètres de méthode Java Surcharge de méthode Java Portée Java Récursivité Java

Cours Java

POO Java Classes/Objets Java Attributs de classe Java Méthodes de classe Java Constructeurs Java Modificateurs Java Encapsulation Java Paquets Java/API Héritage Java Polymorphisme Java Classes internes Java Abstraction Java InterfaceJava Énumérations Java Entrée utilisateur Java Data Java Java ArrayList Liste liée Java Java HashMap Jeu de hachage Java Itérateur Java Classes d'encapsulation Java Exception Java Java RegEx Fils Java Java Lambda

Gestion des fichiers Java

Fichiers Java Java créer/écrire des fichiers Fichiers de lecture Java Java supprimer des fichiers

Comment Java

Additionner deux nombres

Référence Java

Mots clés Java Méthodes de chaîne Java Méthodes mathématiques Java

Exemples Java

Exemples Java Compilateur Java Exercices Java Quizz Java Certificat Java


Expressions Java Lambda


Expressions Java Lambda

Les expressions Lambda ont été ajoutées dans Java 8.

Une expression lambda est un court bloc de code qui prend des paramètres et renvoie une valeur. Les expressions lambda sont similaires aux méthodes, mais elles n'ont pas besoin de nom et peuvent être implémentées directement dans le corps d'une méthode.


Syntaxe

L'expression lambda la plus simple contient un seul paramètre et une expression :

parameter -> expression

Pour utiliser plusieurs paramètres, placez-les entre parenthèses :

(parameter1, parameter2) -> expression

Les expressions sont limitées. Ils doivent renvoyer immédiatement une valeur et ne peuvent pas contenir de variables, d'affectations ou d'instructions telles que ifou for. Afin d'effectuer des opérations plus complexes, un bloc de code peut être utilisé avec des accolades. Si l'expression lambda doit renvoyer une valeur, le bloc de code doit contenir une returninstruction.

(parameter1, parameter2) -> { code block }

Utilisation d'expressions Lambda

Les expressions lambda sont généralement transmises en tant que paramètres à une fonction :

Exemple

Utilisez une expression lamba dans la ArrayListméthode forEach()de pour imprimer chaque élément de la liste :

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Les expressions lambda peuvent être stockées dans des variables si le type de la variable est une interface qui n'a qu'une seule méthode. L'expression lambda doit avoir le même nombre de paramètres et le même type de retour que cette méthode. Java intègre plusieurs de ces types d'interfaces, telles que l' Consumerinterface (qui se trouve dans le java.utilpackage) utilisée par les listes.

Exemple

Utilisez l'interface de Java Consumerpour stocker une expression lambda dans une variable :

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Pour utiliser une expression lambda dans une méthode, la méthode doit avoir un paramètre avec une interface à méthode unique comme type. L'appel de la méthode de l'interface exécutera l'expression lambda :

Exemple

Créez une méthode qui prend une expression lambda en paramètre :

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  }
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  }
}