web-dev-qa-db-fra.com

Signification de lambda () -> {} dans Java

Je regarde la réponse Stack Overflow suivante: Comment changer @Scheduled fixedDelay de Spring lors 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 dans ce code. J'ai besoin de l'écrire sans utiliser de lambdas.

25
Aliuk

C'est un Runnable avec une définition run vide. La représentation de classe anonyme de ceci serait:

new Runnable() {
     @Override public void run() {
          // could have done something here
     }
}
41
Naman

L'expression Lamda est une fonction anonyme qui vous permet de passer des méthodes sous forme d'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 œil à 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
Prashant Goswami

Pour les lambdas:

Le côté gauche est les arguments, ce que vous prenez. Dans () Se trouvent tous les arguments pris par cette fonction

-> 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 la lambda. Tout ce que fait cette fonction est entouré de {}

Après avoir compris cela, il vous suffit de savoir que cette construction passe une instance de la classe correspondante (regardez quel 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 nous venons d'analyser.

1
Deltharis

Les expressions lambda expriment essentiellement des instances d'interfaces fonctionnelles. D'une certaine manière, l'expression Lambda sera: (paramètres de l'opérateur lambda) -> {corps}

() -> System.out.println ("Cela signifie que l'expression Lambda ne prend aucun paramètre");

(p) -> System.out.println ("Expression lambda avec un paramètre:" + p);

0
Archit Sud