Junior
42
questionbank

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

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Функциональный интерфейс — это интерфейс, который содержит ровно один абстрактный метод. Он может содержать дефолтные (default) и статические (static) методы. Используется для работы с лямбда-выражениями и ссылками на методы.

Аннотация @FunctionalInterface не является обязательной, но рекомендуется для явной идентификации и для того, чтобы компилятор мог проверить, соответствует ли интерфейс определению функционального. Если интерфейс помечен ею, но содержит более или менее одного абстрактного метода, компилятор выдаст ошибку.

Примеры стандартных функциональных интерфейсов из пакета java.util.function:

  • Predicate<T>: Принимает аргумент типа T и возвращает boolean. Один абстрактный метод: boolean test(T t);.
  • Consumer<T>: Принимает аргумент типа T и ничего не возвращает (void). Один абстрактный метод: void accept(T t);.
  • Supplier<T>: Ничего не принимает и возвращает значение типа T. Один абстрактный метод: T get();.
  • Function<T, R>: Принимает аргумент типа T и возвращает значение типа R. Один абстрактный метод: R apply(T t);.

Пример пользовательского функционального интерфейса:

java

Пример использования с лямбда-выражением:

java