Spec-Zone.ru › OpenJDK 27

Аннотационный интерфейс 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, 2026, 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.

Spec-Zone.ru

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