A Lambda expression
используется, когда мы хотим выполнить блок кода позже, один или несколько раз. Фактическая точка его использования является deferred execution
и есть много причин для выполнения кода позже, таких как:
- Мы хотим, чтобы запустить код в отдельном потоке.
- Мы хотим запустить код несколько раз.
- Мы хотим запустить его в определенной точке алгоритма, например. сравнение работа во время сортировки.
- Мы хотим запустить код, когда какое-то событие происходит, например, при щелчке ссылки и т.д.
- Мы хотим, чтобы запустить его только в случае необходимости и т.д.
Связь между лямбда-выражения и функциональный интерфейс
A Functional interface
- это интерфейс, который имеет только один метод abtract (хотя он может иметь несколько методов по умолчанию). Мы можем предоставить выражение лямбда всякий раз, когда ожидается объект функционального взаимодействия. Рассмотрим пример, где мы хотим выполнить некоторое действие n раз.
execute(n,() -> System.out.println("Java Rocks"));
Чтобы принять лямбда второй параметр метода подписи должен быть функциональным интерфейсом и в приведенном выше примере мы можем использовать Runnable например.
public static void execute(int n, Runnable action) {
for(int counter = 0; counter < n; counter ++) {
action.run();
}
}
Дело здесь отметить, что лямбда-выражения выполняется, когда action.run()
называется. Вы можете прочитать больше о Lambda Expression here.
При передаче * любого * объекта вы передаете некоторый код, который может быть вызван позже :) например, его методы. – ZhongYu