Рубрики
Без рубрики

Java 8 – Функциональный интерфейс

В предыдущем посте этой серии мы обсуждали, что такое лямбда-выражение и как мы можем написать lamb… Помеченный как java, java 8, функциональный.

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

Итак, что же такое Функциональный интерфейс?

Интерфейс, содержащий единый абстрактный метод (SAM), называется функциональным интерфейсом. Некоторые из функциональных интерфейсов, которые мы, возможно, знаем, следующие:

выполнить() Работоспособный
вызов() Вызываемый
Сравнение() Сравнимый
Действие выполнено() ActionListener Список действий

В версии 1.8 java ввела одну аннотацию @FunctionalInterface для явного указания интерфейса как функционального интерфейса. Но аннотация необязательна. Однако рекомендуется написать аннотацию. Это помогает предотвратить любой дополнительный абстрактный метод. Если интерфейс с аннотацией состоит из более чем одного абстрактного метода, то мы получаем ошибку времени компиляции, в которой говорится:

error: Unexpected @FunctionalInterface annotation
@FunctionalInterface
^
  CustomInterface is not a functional interface
    multiple non-overriding abstract methods found in interface CustomInterface

Примечание: Функциональный интерфейс может иметь несколько методов по умолчанию и статический метод.

Пример 1:

@FunctionalInterface
interface A {
    void m1();
} 

@FunctionalInterface
interface B extends A {
}

@FunctionalInterface
interface C extends A {
    void m1();
}

@FunctionalInterface
interface D extends A {
    void m2();
}

В приведенном выше примере определение интерфейса недопустимо, поскольку оно содержит два метода: m1() [расширенный из интерфейса A] и m2().

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

Оригинал: “https://dev.to/csangharsha/java-8-functional-interface-2cm9”