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

«Что такое функциональный интерфейс» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функциональный интерфейс — это интерфейс с одним абстрактным методом (SAM — Single Abstract Method). Он может содержать дефолтные или статические методы, но должен иметь только один нереализованный метод. Используется в лямбда-выражениях и ссылках на методы.

Пример в Kotlin:

fun interface OnClickListener {
    fun onClick(view: View)
}

// Использование:
val listener = OnClickListener { view -> 
    println("Clicked!")
}

В Java аннотация @FunctionalInterface явно указывает на такое назначение интерфейса, хотя и не обязательна. Примеры: Runnable, Comparator, Consumer.

Видео-ответы