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

Функциональный интерфейс — это интерфейс, который содержит только один абстрактный метод. Это позволяет использовать лямбда-выражения для создания его анонимных реализаций, делая код более лаконичным и читаемым. Функциональные интерфейсы являются основой для лямбда-выражений и методов ссылок, начиная с версии 8.

Примером этого может служить интерфейс `java.util.function.Predicate<T>`, который принимает объект типа `T` и возвращает значение типа `boolean`. Вот пример использования:

Predicate<String> isNotEmpty = s -> !s.isEmpty();
System.out.println(isNotEmpty.test("Hello")); // Выведет true
System.out.println(isNotEmpty.test("")); // Выведет false

Чтобы явно указать, что интерфейс предназначен для использования как функциональный, используется аннотация `@FunctionalInterface`. Эта аннотация не обязательна (компилятор может определить функциональный интерфейс и без неё), но она помогает в документировании кода и обеспечивает проверку времени компиляции, гарантируя, что интерфейс содержит только один абстрактный метод.

Пример собственного интерфейса:

@FunctionalInterface
public interface SimpleFunction {
    int apply(int value);
}

// Использование
SimpleFunction triple = value -> value * 3;
System.out.println(triple.apply(5)); // Выведет 15

Важно отметить, что функциональный интерфейс может содержать также статические и default методы, не нарушая своей "функциональности", поскольку они не считаются абстрактными методами.

Функциональный интерфейс — это интерфейс с одним абстрактным методом, который позволяет использовать лямбда-выражения для более краткого и выразительного кода. Аннотация `@FunctionalInterface` помогает обеспечить, что интерфейс соответствует требованиям функционального интерфейса.

Feb. 22, 2024, easyoffer

Примеры ответов: