Conception par Objet et Programmation Java

Ce document présente les expressions lambda en Java, une nouveauté majeure introduite avec Java 8. Il s'adresse aux étudiants et développeurs souhaitant comprendre la syntaxe, la définition et l'implémentation des interfaces fonctionnelles à l'aide des expressions lambda.

D'après le document Conception par Objet et Programmation Java

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Ce document présente les expressions lambda en Java, une nouveauté majeure introduite avec Java 8. Il s'adresse aux étudiants et développeurs souhaitant comprendre la syntaxe, la définition et l'implémentation des interfaces fonctionnelles à l'aide des expressions lambda.

Introduction aux expressions lambda

Les expressions lambda sont une forme compacte de méthode en Java, caractérisée par un nom implicite et la possibilité d'omettre les types des paramètres ou la valeur de retour. Elles permettent une écriture plus concise que les méthodes classiques.

Une expression lambda est une fonction anonyme, utilisée principalement pour implémenter des interfaces fonctionnelles, c’est-à-dire des interfaces ne possédant qu’une seule méthode abstraite (SAM - Single Abstract Method).

Syntaxe des expressions lambda

La syntaxe générale d’une expression lambda est :

(paramètres) -> corps
  • Le corps peut lancer des exceptions.
  • Pour une expression lambda sur une seule ligne, les accolades et le mot-clé return sont facultatifs.
  • Si l’expression lambda a un seul paramètre, les parenthèses autour du paramètre sont optionnelles.
  • Si elle n’a aucun paramètre, des parenthèses vides sont obligatoires.

Exemples de syntaxe

  • () -> System.out.println("Hello Lambda") : expression lambda sans paramètre.
  • x -> x + 10 : expression lambda avec un paramètre unique.
  • (int x, int y) -> { return x + y; } : expression lambda avec plusieurs paramètres et un corps en bloc.
  • (String x, String y) -> x.length() - y.length() : expression lambda avec plusieurs paramètres et expression simple.
  • (String x) -> { listA.add(x); listB.remove(x); return listB.size(); } : expression lambda avec plusieurs instructions dans le corps.

Type cible des expressions lambda

En Java, le type d’une expression lambda est déterminé par le contexte, appelé le type cible. Ce type cible est toujours une interface fonctionnelle. Les paramètres de l’expression lambda doivent correspondre aux paramètres de la méthode abstraite de cette interface, et le type de retour doit correspondre à celui de cette méthode.

Implémentation des interfaces fonctionnelles avec les expressions lambda

Les expressions lambda sont principalement utilisées pour implémenter des interfaces fonctionnelles standard fournies par Java. Voici les principales interfaces fonctionnelles et leur méthode abstraite associée :

Function

Interface qui prend un argument et retourne un résultat.

Méthode abstraite : apply(Object)

Supplier

Interface qui produit un résultat sans prendre d’argument.

Méthode abstraite : get()

Consumer

Interface représentant une opération qui accepte un argument et ne retourne aucun résultat.

Méthode abstraite : accept(Object)

Predicate

Interface représentant une opération qui accepte un argument et retourne un résultat de type Boolean.

Méthode abstraite : test(Object)

Comparator

Interface utilisée pour comparer deux objets et imposer un ordre total.

Méthode abstraite : compare(T o1, T o2)

UnaryOperator

Spécialisation de Function où l’opérande et le résultat sont du même type.

Méthode abstraite : apply(Object)

BiFunction

Interface représentant une fonction qui prend deux arguments et produit un résultat.

Méthode abstraite : apply(T t, U u)

BinaryOperator

Spécialisation de BiFunction où les deux opérandes et le résultat sont du même type.

Glossaire des termes clés

  • Expression lambda : Fonction anonyme, compacte, utilisée pour implémenter des interfaces fonctionnelles.
  • Interface fonctionnelle : Interface ne possédant qu’une seule méthode abstraite (SAM).
  • SAM (Single Abstract Method) : Méthode abstraite unique d’une interface fonctionnelle.
  • Function : Interface fonctionnelle prenant un argument et retournant un résultat.
  • Supplier : Interface fonctionnelle produisant un résultat sans argument.
  • Consumer : Interface fonctionnelle acceptant un argument sans retourner de résultat.
  • Predicate : Interface fonctionnelle acceptant un argument et retournant un booléen.
  • Comparator : Interface fonctionnelle pour comparer deux objets.
  • UnaryOperator : Spécialisation de Function avec même type pour argument et résultat.
  • BiFunction : Interface fonctionnelle prenant deux arguments et retournant un résultat.
  • BinaryOperator : Spécialisation de BiFunction avec même type pour les deux arguments et le résultat.

Points clés à retenir

  • Les expressions lambda simplifient l’écriture des méthodes anonymes en Java.
  • Une expression lambda correspond toujours à une interface fonctionnelle.
  • La syntaxe des lambdas permet d’omettre les types et accolades dans certains cas.
  • Les interfaces fonctionnelles standard (Function, Supplier, Consumer, Predicate, etc.) facilitent la programmation fonctionnelle en Java.
  • Les expressions lambda améliorent la lisibilité et la concision du code.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions