Сколько методов может быть в функциональном интерфейсе

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

Ответ

Функциональный интерфейс в Java должен содержать ровно один абстрактный метод (SAM — Single Abstract Method). Однако, он может включать:

  • Любое количество default методов.
  • Любое количество static методов.
  • Методы, унаследованные от Object (например, toString(), equals()), они не считаются.

Пример:

@FunctionalInterface
interface Calculator {
    int calculate(int a, int b); // единственный абстрактный метод

    default void logResult(int result) {
        System.out.println("Result: " + result);
    }

    static String getVersion() {
        return "1.0";
    }
}