-
@Documented@Retention(RUNTIME)@Target(TYPE)public @interface FunctionalInterface
一种信息性注释类型,用于指示接口类型声明旨在成为Java语言规范定义的功能接口 。 从概念上讲,功能界面只有一种抽象方法。 由于default methods具有实现,因此它们不是抽象的。 如果接口声明覆盖java.lang.Object
的公共方法之一的抽象方法,那么也不会计入接口的抽象方法计数,因为接口的任何实现都将具有java.lang.Object
或其他地方的实现。请注意,可以使用lambda表达式,方法引用或构造函数引用创建功能接口的实例。
如果使用此批注类型对类型进行批注,则编译器需要生成错误消息,除非:
- 类型是接口类型,而不是注释类型,枚举或类。
- 带注释的类型满足功能接口的要求。
但是,无论接口声明中是否存在
FunctionalInterface
注释,编译器都会将满足功能接口定义的任何接口视为功能接口。- 从以下版本开始:
- 1.8
- See The Java™ Language Specification:
- 4.3.2。 类对象,9.8功能接口,9.4.3接口方法体,9.6.4.9 @FunctionalInterface