2.00M
Категория: Русский языкРусский язык

Лямбда-выражения. Занятие 1

1.

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

2.

Что такое лямбда-выражение
Лямбда-выражение по существу представляет собой анонимный (т.е.
безымянный) метод. Однако такой метод не выполняется сам по себе. Взамен он
используется для реализации метода, определенного функциональным
интерфейсом. Таким образом, лямбда-выражение приводит к форме
анонимного класса. Лямбда-выражения также часто называют замыканиями.

3.

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

4.

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

5.

Функциональные интерфейсы
Пример функционального интерфейса:
interface MyNumber {
double getValue( ) ;
}
Пример использования:
MyNumber myNum;
myNum = () -> 123 . 45;
myNum. getValue();

6.

Более продвинутые примеры лямбдавыражений
С учетом предыдущего обсуждения давайте взглянем на несколько простых
примеров, иллюстрирующих основные концепции лямбда-выражений.
В первом примере собраны вместе все части, показанные на предыдущих
слайдах. (l_4_lumbda_exemple-1)
Во втором примере иллюстрируется использование параметра с лямбдавыражением. (l_4_lumbda_exemple-2)

7.

Блочные лямбда-выражения
В Java поддерживается второй вид лямбда-выражений, где в правой
части лямбда-операции находится блок кода, который может
содержать более одного оператора. Тело этого вида называется
блочным. Лямбда-выражения с блочными телами иногда
называются блочными лямбда-выражениями.

8.

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

9.

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

10.

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

11.

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

12.

Ссылки на статические методы
Для ссылки на статический метод применяется следующий общий
синтаксис:
имя-класса: :имя-метода

13.

Ссылки на методы экземпляра
Чтобы передать ссылку на метод экземпляра конкретного объекта, используйте
приведенный ниже базовый синтаксис:
объектная-ссылка::имя-метода

14.

Ссылки на методы и обобщения
Ссылки на методы можно применять с обобщенными классами и/или
обобщенными методами.

15.

Ссылки на конструкторы
Подобно ссылкам на методы можно создавать ссылки на конструкторы. Ниже
приведена общая форма синтаксиса, предназначенного для создания ссылки на
конструктор:
имя-класса::new

16.

Предопределенные функциональные
интерфейсы

17.

Контакты
Офис в Москве:
107564, ул. Краснобогатырская д.6 стр.2
Телефон: +7 (495) 120-05-33
Email: [email protected]
English     Русский Правила