Java: Функции
Теория: Функциональный интерфейс (Functional Interface)
В Java все реализуется через классы, даже если снаружи так не кажется. Лямбда-функции — не исключение. Чтобы определять лямбда-функции и создавать методы для работы с ними, нужно разобраться с функциональными интерфейсами. Об этом мы и поговорим в нашем уроке.
Функциональный интерфейс — это интерфейс с единственным абстрактным методом. Он "под капотом" используется как тип для соответствующих ему лямбда-функций. Создадим для примера такой интерфейс:
Теперь мы можем определять лямбда-функции, соответствующие этому интерфейсу, записывать их в переменные и вызывать.
Из кода выше мы видим, что лямбда-функция — это объект, который реализует функциональный интерфейс, где методом является определение лямбда-функции. А раз лямбда-функция является объектом, ее можно передавать в качестве параметра метода или присваивать переменной
Таким образом, лямбда-выражение — это лаконичный способ реализовать абстрактный метод функционального интерфейса прямо в месте вызова
Некоторые ситуации использования лямбда-функций настолько распространенные, что функциональные интерфейсы для них встроили прямо в Java. В большинстве случаев вы будете встречаться с ними не напрямую, а через код, в котором они уже задействованы. Часть этих интерфейсов мы рассмотрим в будущих уроках.


