public class Main {
private long t, u;
private Long test(BinaryOperator<Long> b) {
return b.apply(t, u);
}
public static void main(String[] args) {
Main m = new Main();
m.t = 1; m.u = 2;
BinaryOperator<Long> b = (x, y) -> x + y;
System.out.println(m.test(b));
}
}
Il est inutile de le retirer seul. Lambda définit uniquement la méthode de fonctionnement des données, c'est-à-dire qu'il définit une fonction. Spécifiquement où l'utiliser, vous devez définir une méthode avec le paramètre étant une expression lambda (interface fonctionnelle), puis appeler l'opération réelle de lambda (qui fonctionne dans la définition de l'interface) à l'intérieur de la méthode, comme accepter.
Lambda définit n'est pas une fonction, c'est juste une abréviation d'une classe anonyme, et ce qu'elle génère est un objet. Tout comme dans votre exemple, l'objet BinaryOperator<Long> qu'il génère est alors un objet instance de cette classe. Comment l'utiliser est la même que comment utiliser l'objet.
Il est inutile de le retirer seul. Lambda définit uniquement la méthode de fonctionnement des données, c'est-à-dire qu'il définit une fonction. Spécifiquement où l'utiliser, vous devez définir une méthode avec le paramètre étant une expression lambda (interface fonctionnelle), puis appeler l'opération réelle de lambda (qui fonctionne dans la définition de l'interface) à l'intérieur de la méthode, comme accepter.
Ce que
Lambda
définit n'est pas une fonction, c'est juste une abréviation d'une classe anonyme, et ce qu'elle génère est un objet. Tout comme dans votre exemple, l'objetBinaryOperator<Long>
qu'il génère est alors un objet instance de cette classe. Comment l'utiliser est la même que comment utiliser l'objet.