Functional Interface

Definition - A functional interface is an interface that contains strictly only one abstract method but may or may not contain one or more default methods or static methods.

Below are examples of the valid functional interface definition.

With abstract method only


 
With all allowed methods 




Working code snippet

 


Below are examples of the invalid functional interface definition.

With no methods


With multiple abstract methods

 


Points to remember here are as below,
  • @FunctionalInterface annotation is optional.
  • Abstract method can only be public or package-private. 
  • Static method allows all access modifiers except protected.
  • Default method allows only public and package-private.