Sobes.tech
Middle

Qu'est-ce que les expressions lambda en Java et quelles fonctionnalités offrent-elles?

sobes.tech IA

Réponse de l'IA

L’expression lambda en Java est une fonction anonyme qui n’appartient à aucune classe et peut être transmise en tant qu’objet.

Syntaxe : (paramètres) -> { corps }

Possibilités :

  1. Interface fonctionnelle : L’expression lambda peut être assignée à une variable de type interface fonctionnelle (interface avec une seule méthode abstraite).
    // Interface fonctionnelle  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Utilisation de l’expression lambda  
    MyInterface lambda = () -> System.out.println("Bonjour de lambda!");  
    lambda.myMethod();  
    
  2. Simplification du code : Remplacent les classes internes anonymes pour implémenter des interfaces fonctionnelles.
    // Avant Java 8 (classe anonyme)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Ancienne méthode");  
        }  
    });  
    
    // Depuis Java 8 (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Méthode lambda"));  
    
  3. Utilisation dans l’API Stream : S’intègrent avec l’API Stream pour effectuer des opérations sur des collections.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Expression lambda  
         .forEach(System.out::println);        // Référence de méthode (expression lambda)  
    
  4. Exécution différée : Le code à l’intérieur de l’expression lambda s’exécute uniquement lors de l’appel à la méthode fonctionnelle.
  5. Portée des variables : Les expressions lambda peuvent capturer des variables de l’environnement extérieur (les variables locales doivent être finales ou effectivement finales).
Avantage Description
Concision du code Réduit la "verbeusité" par rapport aux classes anonymes.
Meilleure lisibilité Le code devient plus concis et compréhensible.
Traitement parallèle Supporté par l’API Stream pour des opérations parallèles.