Функциональный интерфейс — это интерфейс, который содержит ровно один абстрактный метод. Он может содержать дефолтные (default) и статические (static) методы. Используется для работы с лямбда-выражениями и ссылками на методы.
Аннотация @FunctionalInterface
не является обязательной, но рекомендуется для явной идентификации и для того, чтобы компилятор мог проверить, соответствует ли интерфейс определению функционального. Если интерфейс помечен ею, но содержит более или менее одного абстрактного метода, компилятор выдаст ошибку.
Примеры стандартных функциональных интерфейсов из пакета java.util.function
:
Predicate<T>
: Принимает аргумент типа T
и возвращает boolean
. Один абстрактный метод: boolean test(T t);
.Consumer<T>
: Принимает аргумент типа T
и ничего не возвращаеФункциональный интерфейс — это интерфейс, который содержит ровно один абстрактный метод. Он может содержать дефолтные (default) и статические (static) методы. Используется для работы с лямбда-выражениями и ссылками на методы.
Аннотация @FunctionalInterface
не является обязательной, но рекомендуется для явной идентификации и для того, чтобы компилятор мог проверить, соответствует ли интерфейс определению функционального. Если интерфейс помечен ею, но содержит более или менее одного абстрактного метода, компилятор выдаст ошибку.
Примеры стандартных функциональных интерфейсов из пакета java.util.function
:
Predicate<T>
: Принимает аргумент типа T
и возвращает boolean
. Один абстрактный метод: boolean test(T t);
.Consumer<T>
: Принимает аргумент типа T
и ничего не возвращаеЗарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.