Spec-Zone.ru › OpenJDK 25

Аннотационный интерфейс FunctionalInterface

@Documented @Retention(RUNTIME) @Target(TYPE) public @interface FunctionalInterface
Информационный тип аннотации, используемый для указания на то, что объявление типа интерфейса предназначено быть функциональным интерфейсом в соответствии со Спецификацией языка Java. Концептуально функциональный интерфейс имеет ровно один абстрактный метод. Поскольку у методов по умолчанию есть реализация, они не являются абстрактными. Если интерфейс объявляет абстрактный метод, переопределяющий один из открытых методов java.lang.Object, он также не учитывается при подсчёте абстрактных методов интерфейса, поскольку любая реализация интерфейса будет иметь реализацию из java.lang.Object или из другого источника.

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

Если тип аннотирован этим типом аннотации, компиляторы должны выдавать сообщение об ошибке, если не выполняются следующие условия:

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

Однако компилятор будет считать любой интерфейс, соответствующий определению функционального интерфейса, функциональным интерфейсом независимо от того, присутствует ли аннотация FunctionalInterface в объявлении интерфейса.

См. Спецификацию языка Java:
4.3.2 Объект Class
9.8 Функциональные интерфейсы
9.4.3 Тело метода интерфейса
9.6.4.9 @FunctionalInterface
С версии:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/FunctionalInterface.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API