Значение lambda () -> {} в Java - PullRequest
       38

Значение lambda () -> {} в Java

0 голосов
/ 12 сентября 2018

Я смотрю на следующий ответ переполнения стека: Как изменить @Scheduled fixedDelay в Spring во время выполнения

И в коде есть следующая строка:

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

Я хотел бы знать, что означает лямбда () -> {} в этом коде.Мне нужно написать это без использования лямбд.

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Выражение Lamda - это анонимная функция, которая позволяет передавать методы в качестве аргументов, или просто механизм, который помогает вам удалить много стандартного кода.У них нет модификатора доступа (частного, открытого или защищенного), объявления типа возврата и имени.

Давайте рассмотрим этот пример.

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

В вашем случае вы можете сделать что-то вроде ниже:

schedulerFuture = taskScheduler.schedule(new Runnable() {
     @Override 
     public void run() {
        // task details
     }
}, this);
0 голосов
/ 12 сентября 2018

Лямбда-выражения в основном выражают экземпляры функциональных интерфейсов. В некотором смысле лямбда-выражение будет: (параметры лямбда-оператора) -> {body}

() -> System.out.println («Это означает, что лямбда-выражение не принимает никаких параметров»);

(p) -> System.out.println ("Лямбда-выражение с одним параметром:" + p);

0 голосов
/ 12 сентября 2018

Для лямбд:

Левая сторона - аргументы, что вы принимаете.В () заключены все аргументы, которые принимает эта функция

-> указывает, что это функция, которая берет то, что слева, и передает ее вправо для обработки

Правая сторонатело - что делает лямбдаВ {} заключено все, что делает эта функция

После того, как вы это выясните, вам нужно только знать, что эта конструкция передает экземпляр соответствующего класса (посмотрите, какой тип аргумента ожидается в вызове schedule())это единственный метод, который делает то же самое, что и лямбда-выражение, которое мы только что проанализировали.

0 голосов
/ 12 сентября 2018

Это Runnable с пустым run определением.Анонимное представление класса этого будет:

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