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.
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
}
}
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);
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.
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);