Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Inherited Methods](https://developer.android.com/reference/java/lang/FunctionalInterface#inhmethods)

# FunctionalInterface

` public abstract @interface FunctionalInterface `   
` implements https://developer.android.com/reference/java/lang/annotation/Annotation `

|---|
| java.lang.FunctionalInterface |

<br />

*** ** * ** ***

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](https://developer.android.com/reference/java/lang/reflect/Method#isDefault()) 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.

## Summary

### Inherited methods

From interface ` https://developer.android.com/reference/java/lang/annotation/Annotation ` ` abstract https://developer.android.com/reference/java/lang/Class<? extends https://developer.android.com/reference/java/lang/annotation/Annotation>` ` https://developer.android.com/reference/java/lang/annotation/Annotation#annotationType()() `

Returns the annotation interface of this annotation.
` abstract boolean` ` https://developer.android.com/reference/java/lang/annotation/Annotation#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Returns true if the specified object represents an annotation that is logically equivalent to this one.
` abstract int` ` https://developer.android.com/reference/java/lang/annotation/Annotation#hashCode()() `

Returns the hash code of this annotation.
` abstract https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/annotation/Annotation#toString()() `

Returns a string representation of this annotation.