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

Содержание

Слайд 2

Методы интерфейсов по умолчанию

Java 8 позволяет вам добавлять не абстрактные реализации методов

Методы интерфейсов по умолчанию Java 8 позволяет вам добавлять не абстрактные реализации
в интерфейс, используя ключевое слово default. Эта новшество также известно, как метод расширения.

Слайд 3

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

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

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

Слайд 4

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

Синтаксис
(список параметров) -> исполняемый код;
(String firstStr, String secondStr)

Лямбда - выражения Синтаксис (список параметров) -> исполняемый код; (String firstStr, String
-> {
if (firstStr.length() < secondStr.length()) return -1;
else if (firstStr.length() > secondStr.length()) return 1;
else return 0;
}

Слайд 5

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

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

Лямбда - выражения Если лямбда-выражение не имеет параметров, вы все равно необходимо
пустые скобки.
() -> {
for (int i = 0; i < 1000; i++) doWork();
}

Слайд 6

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

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

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

Слайд 7

Ссылки на методы и конструкторы

Java 8 позволяет вам передавать ссылки на методы

Ссылки на методы и конструкторы Java 8 позволяет вам передавать ссылки на
или конструкторы. Для этого нужно использовать оператор ::

Слайд 8

Области действия лямбд

Доступ к переменным внешней области действия из лямбда-выражения очень схож

Области действия лямбд Доступ к переменным внешней области действия из лямбда-выражения очень
к доступу из анонимных классов. Вы можете ссылаться на переменные, объявленные как final, на экземплярные поля класса и статические переменные.

Слайд 9

Доступ к методам интерфейсов по умолчанию

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

Доступ к методам интерфейсов по умолчанию Внутри лямбда-выражений запрещено обращаться к методам
умолчанию. Следующий код не скомпилируется:
Formula formula = (a) -> sqrt( a * 100);

Слайд 10

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

В JDK 1.8 содержит множество встроенных функциональных интерфейсов. Некоторые из

Встроенные функциональные интерфейсы В JDK 1.8 содержит множество встроенных функциональных интерфейсов. Некоторые
них хорошо известны по предыдущим версиям языка, например, Comparator или Runnable. Все эти интерфейсы были поддержаны в лямбдах добавлением аннотации @FunctionalInterface.

Слайд 11

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

Однако в Java 8 также появилось много новых функциональных интерфейсов.

Встроенные функциональные интерфейсы Однако в Java 8 также появилось много новых функциональных интерфейсов.

Слайд 12

Предикаты

Предикаты — это функции, принимающие один аргумент, и возвращающие значение типа boolean.

Предикаты Предикаты — это функции, принимающие один аргумент, и возвращающие значение типа
Интерфейс содержит различные методы по умолчанию, позволяющие строить сложные условия (and, or, negate).

Слайд 13

Функции

Функции принимают один аргумент и возвращают некоторый результат. Методы по умолчанию могут

Функции Функции принимают один аргумент и возвращают некоторый результат. Методы по умолчанию
использоваться для построения цепочек вызовов (compose, andThen).

Слайд 14

Поставщики

Поставщики (suppliers) предоставляют результат заданного типа. В отличии от функций, поставщики не

Поставщики Поставщики (suppliers) предоставляют результат заданного типа. В отличии от функций, поставщики не принимают аргументов.
принимают аргументов.

Слайд 15

Потребители

Потребители (consumers) представляют собой операции, которые производятся на одним входным аргументом.

Потребители Потребители (consumers) представляют собой операции, которые производятся на одним входным аргументом.

Слайд 16

Компараторы

Компараторы хорошо известны по предыдущим версиям Java. Java 8 добавляет в интерфейс

Компараторы Компараторы хорошо известны по предыдущим версиям Java. Java 8 добавляет в
различные методы по умолчанию.

Слайд 17

Опциональные значения

Опциональные значения (optionals) не являются функциональными интерфейсами, однако являются удобным средством

Опциональные значения Опциональные значения (optionals) не являются функциональными интерфейсами, однако являются удобным средством предотвращения NullPointerException.
предотвращения NullPointerException.

Слайд 18

Опциональные значения

Опциональные значение — это по сути контейнер для значения, которое может

Опциональные значения Опциональные значение — это по сути контейнер для значения, которое
быть равно null. Например, вам нужен метод, который возвращает какое-то значение, но иногда он должен возвращать пустое значение. Вместо того, чтобы возвращать null, в Java 8 вы можете вернуть опциональное значение.

Слайд 19

Потоки

Тип java.util.Stream представляет собой последовательность элементов, над которой можно производить различные операции.

Потоки Тип java.util.Stream представляет собой последовательность элементов, над которой можно производить различные
Операции над потоками бывают или промежуточными (intermediate) или конечными (terminal). параллельно.

Слайд 20

Потоки

Конечные операции возвращают результат определённого типа, а промежуточные операции возвращают тот же

Потоки Конечные операции возвращают результат определённого типа, а промежуточные операции возвращают тот
поток.
Таким образом вы можете строить цепочки из несколько операций над одним и тем же потоком.

Слайд 21

Потоки

Поток создаются на основе источников, например типов, реализующих java.util.Collection, такие как списки

Потоки Поток создаются на основе источников, например типов, реализующих java.util.Collection, такие как
или множества (ассоциативные массивы не поддерживаются). Операции над потоками могут выполняться как последовательно, так и параллельно.

Слайд 22

Filter

Операция Filter принимает предикат, который фильтрует все элементы потока. Эта операция является

Filter Операция Filter принимает предикат, который фильтрует все элементы потока. Эта операция
промежуточной, т.е. позволяет нам вызвать другую операцию (например, forEach) над результатом. ForEach принимает функцию, которая вызывается для каждого элемента в (уже отфильтрованном) поток.

Слайд 23

Sorted

Операция Sorted является промежуточной операцией, которая возвращает отсортированное представление потока. Элементы сортируются

Sorted Операция Sorted является промежуточной операцией, которая возвращает отсортированное представление потока. Элементы
в обычном порядке, если вы не предоставили свой компаратор.
Помните, что sorted создаёт всего лишь отсортированное представление и не влияет на порядок элементов в исходной коллекции.

Слайд 24

Map

Промежуточная операция map преобразовывает каждый элемент в другой объект при помощи переданной

Map Промежуточная операция map преобразовывает каждый элемент в другой объект при помощи переданной функции.
функции.

Слайд 25

Match

Для проверки, удовлетворяет ли поток заданному предикату, используются различные операции сопоставления (match).

Match Для проверки, удовлетворяет ли поток заданному предикату, используются различные операции сопоставления
Все операции сопоставления являются конечными и возвращают результат типа boolean.

Слайд 26

Count

Операция Count является конечной операцией и возвращает количество элементов в потоке. Типом

Count Операция Count является конечной операцией и возвращает количество элементов в потоке.
возвращаемого значения является long.

Слайд 27

Reduce

Эта конечная операция производит свертку элементов потока по заданной функции. Результатом является

Reduce Эта конечная операция производит свертку элементов потока по заданной функции. Результатом является опциональное значение.
опциональное значение.
Имя файла: Java-8.-Методы-интерфейсов-по-умолчанию,-лямбда---выражения.pptx
Количество просмотров: 42
Количество скачиваний: 0