Функциональные интерфейсы
Функциональные интерфейсы — то, что принимают методы вроде filter или map (интерфейс с одной абстрактной функцией):
Predicate<T>— проверка, возвращаетboolean(дляfilter);Function<T,R>— преобразование (дляmap);Consumer<T>— действие без возврата (дляforEach);Supplier<T>— поставщик значения.
Predicate<String> isLong = name -> name.length() > 3;
Function<String, String> upper = name -> name.toUpperCase();
Лямбда сама по себе — просто кусок кода. Чтобы её можно было передать в метод, нужен тип — функциональный интерфейс, который описывает, какую сигнатуру (вход/выход) эта функция должна иметь.
🎤 Закрыл тему, если можешь объяснить:
• что такое функциональный интерфейс и зачем он нужен лямбде;
• чем `Predicate`, `Function`, `Consumer` и `Supplier` отличаются друг от друга.
• чем `Predicate`, `Function`, `Consumer` и `Supplier` отличаются друг от друга.