Sobes.tech
Back to questions
Junior — Middle
62

Допустимо ли наличие двух методов в функциональном интерфейсе?

Answer from AI

sobes.tech AI

Функциональный интерфейс в Java — это интерфейс с ровно одним абстрактным методом. Наличие двух и более абстрактных методов делает интерфейс не функциональным.

Однако интерфейс может содержать несколько методов по следующим причинам:

  • Методы по умолчанию (default methods) — имеют реализацию и не считаются абстрактными.
  • Статические методы — тоже не абстрактные.

Таким образом, допустимо иметь несколько методов в интерфейсе, но только один из них должен быть абстрактным, чтобы интерфейс считался функциональным и мог использоваться, например, с лямбда-выражениями.

Пример функционального интерфейса:

@FunctionalInterface
public interface MyFunction {
    void apply(); // единственный абстрактный метод

    default void log() {
        System.out.println("Logging");
    }
}

Если добавить второй абстрактный метод, компилятор выдаст ошибку.