Какие знаешь характеристики функционального интерфейса

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

Ответ

Функциональный интерфейс в Java/Kotlin — это интерфейс с одним абстрактным методом (SAM). Ключевые характеристики:

  1. Один абстрактный метод — например, Runnable (run()).
  2. Может иметь default/static методы — они не нарушают правило SAM.
  3. Аннотация @FunctionalInterface (необязательна, но помогает компилятору проверить условие SAM).

Пример:

@FunctionalInterface
interface Calculator {
    int calculate(int a, int b); // единственный абстрактный метод
    default void log() { System.out.println("Logging"); } // default-метод допустим
}

В Kotlin используется fun interface для объявления:

fun interface Adder {
    fun add(a: Int, b: Int): Int
}

Используется для лямбд и ссылок на методы.