Module java.base
Package java.lang

Annotation Interface FunctionalInterface


@Documented @Retention(RUNTIME) @Target(TYPE) public @interface FunctionalInterface
一个信息性的注解类型,用于指示接口类型声明旨在成为Java语言规范定义的函数式接口。从概念上讲,函数式接口具有确切地一个抽象方法。由于默认方法有一个实现,它们不是抽象的。如果一个接口声明一个抽象方法覆盖java.lang.Object的一个公共方法,那也不会计入接口的抽象方法计数,因为接口的任何实现都将具有来自java.lang.Object或其他地方的实现。

请注意,函数式接口的实例可以使用lambda表达式、方法引用或构造函数引用来创建。

如果一个类型被标注了这个注解类型,编译器将生成一个错误消息,除非:

  • 该类型是一个接口类型,而不是注解类型、枚举或类。
  • 被标注的类型满足函数式接口的要求。

然而,编译器将把任何符合函数式接口定义的接口视为函数式接口,无论接口声明中是否存在FunctionalInterface注解。

参见 Java语言规范:
4.3.2 类Object
9.8 函数式接口
9.4.3 接口方法体
9.6.4.9 @FunctionalInterface
自版本:
1.8