An informative annotation type used to indicate that an interface
type declaration is intended to be a
functional interface as
defined by the Java Language Specification.
Conceptually, a functional interface has exactly one abstract
method. Since
default methods have an implementation, they are not abstract. If
an interface declares an abstract method overriding one of the
public methods of
java.lang.Object, that also does
not count toward the interface's abstract method count
since any implementation of the interface will have an
implementation from
java.lang.Object or elsewhere.
Note that instances of functional interfaces can be created with
lambda expressions, method references, or constructor references.
If a type is annotated with this annotation type, compilers are
required to generate an error message unless:
- The type is an interface type and not an annotation type, enum, or class.
- The annotated type satisfies the requirements of a functional interface.
However, the compiler will treat any interface meeting the
definition of a functional interface as a functional interface
regardless of whether or not a FunctionalInterface
annotation is present on the interface declaration.
FlexDoc/Javadoc is a template-driven programming tool for rapid development of any Javadoc-based Java API documentation generators (i.e. doclets). If you need to customize your Javadoc without writing a full-blown doclet from scratch,
FlexDoc/Javadoc may be the only tool able to help you! Find out more at
www.flexdoc.xyz