Une propriété très précieuse des interfaces fonctionnelles est qu'elles peuvent être instanciées à l'aide de lambdas. Voici quelques exemples de lambdas :
À gauche se trouve une liste d'entrées séparées par des virgules du type spécifié, et à droite se trouve un bloc de code avec retour :
(int x, int y) -> { return x + y; }
On la gauche est une liste de types déduits séparés par des virgules Liste d'entrée, la droite est la valeur de retour :
(x, y) -> x + y
La gauche est un paramètre unique du type dérivation, la droite est une valeur de retour :
x -> x * x
Il n'y a pas d'entrée à gauche (nom officiel : "burger arrow"), renvoie une valeur à droite :
() -> x
La gauche est un paramètre unique de type déduit , et la droite est un bloc de code sans valeur de retour (renvoyant void) :
x -> { System.out.println(x); }
Références de méthode statique :
String::valueOf
Références de méthode non statique :
Object::toString
Références de fonction héritées :
x::toString
Références de constructeur :
ArrayList::new
Vous pouvez proposer certains formats de référence de fonction comme raccourci pour d'autres formats lambda.