Définition de l'interface fonctionnelle
Contient une seule méthode abstraite.
Peut avoir des méthodes standards et/ou statiques.
La méthode abstraite ne précise pas la mise en œuvre.
Interface MaValeur {
double getValue();
>
Rappel : Dans les interfaces fonctionnelles, le modificateur abstrait n'est pas explicitement nécessaire, car Java suppose que toute méthode qui n'a pas d'implémentation dans une interface est automatiquement abstraite.
Attribuer un Lambda à une interface fonctionnelle
MaValeur maVal = () -> 98,6;
Le type de retour et les paramètres du lambda doivent être compatibles avec la méthode abstraite.
Appel de méthode abstraite :
System.out.println("Une valeur constante : " myVal.getValue());
Résultat : 98,6.
Interfaces fonctionnelles avec paramètres
Interface MyParamValue {
double getValue(double v);
>
Lambda avec calcul de l'inverse :
MyParamValue myPval = (n) -> 1,0/n;
System.out.println("L'inverse de 4 est " myPval.getValue(4.0));
Inférence de type
Type de paramètre déduit par le contexte :
(n) -> 1,0/n ; // Type déduit comme double
Type explicitement déclaré (facultatif) :
(double n) -> 1,0/n;
Règles de compatibilité
(int x, int y) -> xy;
Conclusion
Des interfaces fonctionnelles permettent l'utilisation de lambdas.
Les expressions Lambda fournissent une implémentation concise de la méthode abstraite.
Les contextes de type cible et la compatibilité des types sont cruciaux pour son utilisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!