Single Abstract Method (SAM) интерфейс — это Java-интерфейс, который содержит ровно один абстрактный метод. В Java 8 такие интерфейсы ещё называют функциональными интерфейсами.
default- или static-методовObject без нарушения SAM-правила@FunctionalInterface (опционально, но рекомендуется)SAM-интерфейсы — это основа функционального программирования в Java 8. Они позволяют использовать:
@FunctionalInterface
public interface Calculator {
int add(int a, int b);
}
Вместо создания анонимного класса:
Calculator calc = (a, b) -> a + b;
Java 8 предоставляет встроенные функциональные интерфейсы в пакете java.util.function:
Predicate<T> — проверяет условиеFunction<T, R> — преобразует входные данные в выходныеConsumer<T> — выполняет действиеSupplier<T> — возвращает значениеАннотация @FunctionalInterface опциональна, но её настоятельно рекомендуется использовать, потому что она:
Функциональный интерфейс может содержать несколько абстрактных методов, если они все имеют одинаковую сигнатуру.
Новый — ещё не проверен сообществом
Вы