Java 8 introduces functional interfaces. If an interface has only one abstract method, then it is known as the functional interface. This can be annotated with @FunctionalInterface annotation. The following are some of the points to remember about the functional interfaces:
- Functional interface has only one abstract method
- @FunctionalInterface annotation can be used for denoting the functional interface. However, it is not necessary to use this annotation, it is only useful to catch the error in the compile time. When you annotate an interface with @FunctionalInterface, if more then one abstract method is defined it will throw a compiler error.
- Functional interfaces can define one or more default methods.
- Lambda expressions can be used for invoking the functional interface methods. You can look the example in our previous tutorial.
It is defined as:
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 fromjava.lang.Object
or elsewhere.