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 :
- 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(); - 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")); - 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) - 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.
- 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. |