Signification de lambda () - > {} en Java

Je regarde la réponse de débordement de pile suivante: Comment changer le Printemps @Prévue fixedDelay au moment de l'exécution

Et dans le code il y a la ligne suivante:

schedulerFuture = taskScheduler.schedule(() -> { }, this);

Je voudrais savoir ce que le lambda () -> {} signifie que dans ce code. J'ai besoin de l'écrire sans utiliser lambdas.

24
demandé sur Boann 2018-09-12 13:24:32

4 réponses

, Sa Runnable avec un vide run définition. La représentation anonyme de cette classe serait:

new Runnable() {
     @Override public void run() {
          // could have done something here
     }
}
41
répondu nullpointer 2018-09-12 17:50:18

Lamda expression est une fonction anonyme qui vous permet de passer des méthodes comme arguments ou simplement, un mécanisme qui vous aide à supprimer beaucoup de code standard. Ils n'ont aucun modificateur d'accès (privé, public ou protégé), Aucune déclaration de type de retour et aucun nom.

Jetons un coup d'oeil à cet exemple.

(int a, int b) -> {return a > b}

Dans votre cas, vous pouvez faire quelque chose comme ci-dessous:

schedulerFuture = taskScheduler.schedule(new Runnable() {
     @Override 
     public void run() {
        // task details
     }
}, this);
2
répondu Prashant Goswami 2018-09-12 12:21:55

Pour lambdas:

Côté gauche est des arguments, ce que vous prenez. Inclus dans () sont tous les arguments que cette fonction prend

-> indique que c'est une fonction qui prend ce qui est à gauche et le transmet à droite pour le traitement

Le côté droit est le corps-ce que fait le lambda. Inclus dans {} est tout ce que cette fonction fait

Après avoir compris cela, il vous suffit de savoir que cette construction passe une instance de classe correspondante (regardez ce qui est le type d'argument attendu dans l'appel schedule()) avec sa seule méthode faisant exactement la même chose que l'expression lambda que nous venons d'analyser.

1
répondu Deltharis 2018-09-12 10:31:07

Les expressions Lambda expriment essentiellement des instances d'interfaces fonctionnelles. Dans un moyen d'expression Lambda sera: (lambda opérateur params) -> {corps}

() - > Système.hors.println ("cela signifie que L'expression Lambda ne prend aucun paramètre");

(P) - > Système.hors.println ("expression Lambda avec un paramètre:" + p);

-1
répondu Archit Sud 2018-09-12 10:30:40