Ответ 1
Его Runnable
с определением пустого run
. Анонимное представление этого класса было бы следующим:
new Runnable() {
@Override public void run() {
// could have done something here
}
}
Я смотрю следующий ответ "Переполнение стека": как изменить Spring @Scheduled fixedDelay во время выполнения
А в коде есть следующая строка:
schedulerFuture = taskScheduler.schedule(() -> { }, this);
Я хотел бы знать, что означает lambda () → {}
в этом коде. Мне нужно написать его без использования лямбда.
Его Runnable
с определением пустого run
. Анонимное представление этого класса было бы следующим:
new Runnable() {
@Override public void run() {
// could have done something here
}
}
Выражение Lamda - анонимная функция, позволяющая передавать методы в качестве аргументов или просто механизм, который помогает удалить много шаблонов. У них нет модификатора доступа (закрытый, общедоступный или защищенный), без декларации типа возврата и без имени.
Давайте посмотрим на этот пример.
(int a, int b) → {return a > b}
В вашем случае вы можете сделать что-то вроде ниже:
schedulerFuture = taskScheduler.schedule(new Runnable() {
@Override
public void run() {
// task details
}
}, this);
Для лямбда:
Левая сторона - это аргументы, что вы принимаете. Вложенные в ()
- все аргументы, которые эта функция принимает
->
указывает, что это функция, которая берет то, что слева, и передает ее вправо для обработки
Правая сторона тела - то, что делает лямбда. В {}
есть все, что делает эта функция
После того, как вы это выясните, вам нужно только знать, что эта конструкция передает экземпляр класса соответствия (посмотрите, какой тип ожидаемого аргумента в вызове schedule()
), и только он делает то же самое, что и выражение лямбда, которое мы только что проанализированы.
Лямбда-выражения в основном выражают экземпляры функциональных интерфейсов. В некотором смысле лямбда-выражение будет: (параметры лямбда-оператора) → {body}
() → System.out.println("Это означает, что лямбда-выражение не принимает никаких параметров");
(p) → System.out.println("Лямбда-выражение с одним параметром:" + p);
Если вы хотите больше узнать о лямбда-выражении, посетите Java 8 Лямбда-выражение