Comment utiliser les expressions lambda en java 8

Java 8 introduit une nouvelle fonctionnalité qui à certains égards est similaire aux classes anonymes, mais avec une syntaxe plus concise. Plus spécifiquement, une expression lambda vous permet de créer une classe anonyme qui implémente un type spécifique de l'interface appelée interface fonctionnelle- qui a une et une seule méthode abstraite.

La Balle Interface répond à cette définition:

Interface boule {hit void () -}

Ici, la seule méthode abstraite est le frapper Procédé.

Une interface fonctionnelle peut contenir d'autres méthodes, à condition qu'ils ne sont pas abstraites. Jusqu'à Java 8, cela n'a pas été possible parce que l'interface pourrait contenir seulement méthodes abstraites. Cependant, en Java 8, vous pouvez créer des méthodes par défaut qui fournissent une implémentation par défaut. Ainsi, une interface fonctionnelle peut contenir un ou plusieurs procédés de défaut, mais peut contenir seulement une méthode abstraite.

Une expression lambda est une manière concise pour créer une classe anonyme qui implémente une interface fonctionnelle. Au lieu de fournir une déclaration de méthode formelle qui comprend le type de retour, nom de la méthode, les types de paramètres, et le corps de la méthode, vous définissez simplement les types de paramètres et le corps de la méthode. Le compilateur Java déduit le reste basée sur le contexte dans lequel vous utilisez l'expression lambda.

Les types de paramètres sont séparés du corps de la méthode par un nouvel opérateur, appelé le opérateur flèche, qui se compose d'un trait d'union suivi d'un symbole supérieur à. Voici un exemple qui implémente le Balle Interface:

() -> {System.out.println ("Vous a frappé!") -}

Ici l'expression lambda implémente une interface fonctionnelle dont la seule méthode ne pas accepter des paramètres. Lorsque la méthode est appelée, le texte "Vous le frappez!" est imprimé.

Vous pouvez utiliser une expression lambda partout où vous pouvez utiliser une expression Java normale. Vous les utilisez plus dans les états de cession ou de paramètres passés. La seule restriction est que vous pouvez utiliser une expression lambda que dans un contexte qui exige une instance d'une interface fonctionnelle. Par exemple, voici un programme complet qui utilise une expression lambda pour mettre en œuvre la Balle Interface:

public class LambdaBall {static void main (String [] args) {publics boule B = () -> {System.out.println ("Vous le frappez!") -} -b.hit () -} Interface boule {void frapper () -}}

La syntaxe générale pour une expression lambda est la suivante:

(paramètres) -> expression

ou ca:

(paramètres) -> { déclaration- ... }

Si vous utilisez une expression, un point-virgule est pas nécessaire. Si vous utilisez un ou plusieurs déclarations, les déclarations doivent être enfermés dans des accolades et un point-virgule est requis à la fin de chaque énoncé.

Ne pas oublier que la déclaration dans laquelle vous utilisez l'expression lambda doit se terminer par un point-virgule. Ainsi, l'expression lambda dans l'exemple précédent a deux points-virgules à proximité:

Balle b = () -> {System.out.println ("Vous le frappez!") -} -

Le premier point-virgule marque la fin de l'instruction qui appelle System.out.println- la deuxième virgule marque la fin de l'instruction d'affectation qui affecte l'expression lambda à la variable b.


» » » » Comment utiliser les expressions lambda en java 8