Sobes.tech
Back to questions
Junior — Middle
103

Каким образом компилятор распознает и проверяет соответствие интерфейса, помеченного как функциональный?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

В Java функциональный интерфейс — это интерфейс с ровно одним абстрактным методом. Компилятор распознает такой интерфейс по количеству абстрактных методов: если их ровно один, интерфейс считается функциональным.

Проверка происходит во время компиляции: если интерфейс помечен аннотацией @FunctionalInterface, компилятор дополнительно проверяет, что в интерфейсе действительно только один абстрактный метод. Если аннотация отсутствует, интерфейс все равно считается функциональным, если у него ровно один абстрактный метод.

Пример:

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

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

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