Java 8 Лямбда выражения.

Лямбда-выражения это безымянная функция с параметрами и телом.

Тело лямбда-выражение может быть оператором блока или выражение.

Отделяет параметры и тело.

принимает параметр Int и возвращает значение параметра увеличивается на 1.

принимает два параметра целочисленные и возвращает сумму.

принимает параметр типа String и производит его вывод в консоль.

принимает параметр и выводит его в консоль. Он аналогичен приведенному выше коду.

не принимает никаких параметров и возвращает строку.

принимает параметр типа String и возвращает его длину.

Следующий лямбда принимает два параметра целочисленные и возвращает максимальное из двух.

Почему лямбда-выражения

Выражения лямбда позволяет нам передать логику в компактном виде.

Следующий код использует анонимный внутренний класс, чтобы добавить обработчик событий для действия нажатия кнопки.

Обработчик действия печатает сообщение в консоль, когда эта кнопка нажата.

С помощью лямбда-выражения мы можем добавить обработчик действий на события нажатия кнопки в одной строке кода.

Java Лямбда Синтаксис

Общий синтаксис для использования лямбда-выражений

Отделяет параметры и лямбда — выражения тела.

Параметры заключены в круглые скобки, которые таким же образом, как для методов в то время как тело лямбда-выражение представляет собой блок кода, заключенный в фигурные скобки.

Выражение тела лямбда может иметь локальные переменные, операторы. Мы можем использовать перерыв, продолжить, и вернуться в лямбда-выражения тела. Мы можем даже выбросить исключения из выражения тела лямбда.

Лямбда-выражение не имеет имени, так как он представляет собой анонимный внутренний класс.

Тип возвращаемого значения лямбда-выражения выводится компилятором.

Лямбда-выражение не может иметь броски пункт как метод.

Лямбда-выражение не может быть общим, а родовое определяется в функциональном интерфейсе.

Явные и неявные лямбда-выражения

Лямбда-выражения, которое не декларирует тип, присвоенные его параметров, называется неявным лямбда-выражения.

Явное выражение лямбда лямбда-выражение, которое объявляет тип его параметров.

В примере ниже я написал, следующий код который создает интерфейс с одним методом и использует его в качестве типа лямбда — выражения. При создании лямбда — выражения мы объявляем тип параметра x1, чтобы иметь тип Integer.

Результатом выполнения программы будет:   Вычисляем 5*2=10

Во втором примере я снова не использовал явно тип, но компилятор меня все равно понимает что я хочу.

Пропускаем указание типа параметров

Мы можем выбрать, чтобы исключить типы параметров в лямбда-выражений.

В лямбда — выражения

Типы параметров объявляются.

Мы можем смело переписать лямбда-выражения, опуская типы параметров, как в примере ниже.

Если мы решили опустить типы параметров, мы должны опустить типы для всех параметров.

Результат выполнения программы будет: 12

Single Параметр

Для одного выражения параметра лямбда мы можем пропустить скобки, как мы пропускаем явно тип параметра.

Лямбда — выражения

Тогда мы можем опустить тип параметра, чтобы иметь

Далее мы можем опустить тип параметра и круглые скобки следующим образом.

Результат будет тот же 12.

Нет Параметры

Для лямбда-выражения без параметров, мы по-прежнему можем нуждаются в том что бы ставить круглые скобки.

В следующем примере показано , как использовать BooleanSupplier .

Результатом выполнения программы будет: true; false;

Модификатор final

Вы можете использовать final модификатор в объявлении параметра явных лямбда — выражений.

Следующие выражения лямбда использовать конечный модификатор.

Мы можем использовать только один модификатор следующим образом.

Результатом выполнения программы будет: 12;

Лямбда-выражения для тела

Телом лямбда-выражение может быть оператором блока или одно выражение.

Если оператор блока заключен в скобки,  одновременно одно выражение может существовать без скобок.

В блоке возвращения мы можем использовать return оператор для возврата значения.

Следующее выражение лямбда использует оператор блока и использует return оператор , чтобы вернуть сумму.

В то время как следующее лямбда использует выражение:

Выражение не требует фигурных скобок.

Лямбда не нужно возвращать значение. Следующие два лямбда-выражения просто выводят в консоль и ничего не возвращают.

Пример:

Результатом выполнения программы будет: 12

Обновлено: 08.04.2017 — 11:14

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.