В предыдущем посте этой серии мы обсуждали, что такое лямбда-выражение и как мы можем написать лямбда-выражение. В этом посте мы обсудим, как мы можем выполнить лямбда-выражение. Как я уже сказал, в конце последнего поста мы можем выполнить лямбда-выражение, используя новую функцию 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”