Функциональный интерфейс — это интерфейс, содержащий только один абстрактный метод. Они используются для реализации лямбда-выражений и ссылок на методы. Могут иметь default и static методы.
Примеры встроенных функциональных интерфейсов в пакете java.util.function:
Predicate<T>: Принимает один аргумент типа T и возвращает булево значение.
java
Consumer<T>: Принимает один аргумент типа T и ничего не возвращает. Выполняет действие над аргументом.
java
Supplier<T>: Не принимает аргументов и возвращает значение типа T.
java
Function<T, R>: Принимает аргумент типа T и возвращает значение типа R.
java
Аннотация @FunctionalInterface опциональна, но рекомендуется для проверки компилятором и ясности.
java