Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

-> (lambda)

Лямбда-выражение — короткая запись функции, которую можно передать как значение.

Доступно с: Java 8

Синтаксис

(parameters) -> expression
(parameters) -> { statements; }

Примеры

Формы записи:

void main() {
    Runnable hello = () -> IO.println("Hello");
    Function<Integer, Integer> square = x -> x * x;
    BinaryOperator<Integer> add = (a, b) -> a + b;
    Function<String, String> shout = s -> {
        String upper = s.toUpperCase();
        return upper + "!";
    };
    hello.run();
    IO.println(square.apply(5));
    IO.println(add.apply(2, 3));
    IO.println(shout.apply("hi"));
}

Результат:

Hello
25
5
HI!

Лямбда как аргумент метода:

void main() {
    List<String> names = new ArrayList<>(List.of("Oleg", "Anna", "Ivan"));
    names.sort((a, b) -> a.compareTo(b));
    names.forEach(n -> IO.println("- " + n));
}

Результат:

- Anna
- Ivan
- Oleg

Примечания

Лямбда всегда реализует функциональный интерфейс — интерфейс с одним абстрактным методом (Function, Predicate, Runnable, Comparator). Скобки вокруг единственного параметра и фигурные скобки вокруг одного выражения можно опустить. Внешние локальные переменные внутри лямбды доступны только для чтения: они должны быть фактически неизменяемыми (effectively final).

См. также

  • :: (method reference) — Ссылка на метод — ещё более короткая замена лямбды, которая только вызывает метод.
  • Function — Функция, которая принимает значение типа `T` и возвращает значение типа `R`.
  • Predicate — Условие: функция, которая принимает значение и возвращает `boolean`.
  • Consumer — Действие: принимает значение и ничего не возвращает.

В учебнике

  • Лямбда-выражения — Лямбды в Java: запись функции как значения, формы синтаксиса, передача лямбд в методы и захват переменных.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.