一、函数式接口简介
函数式接口是指只包含一个抽象方法的接口,可以使用 Lambda 表达式来创建该接口的实例。
@FunctionalInterface 注解是 Java Lang 包中的一个注解,用于标识一个接口是函数式接口。
@FunctionalInterface 注解的作用:
- 编译时检查:@FunctionalInterface 注解会在编译时检查标注的接口是否符合函数式接口的定义,即是否只有一个抽象方法。如果不符合,编译器会报错,提醒开发者修正。
- Lambda 表达式支持:函数式接口的存在主要是为了支持 Lambda 表达式,通过 Lambda 表达式可以简化代码,提高代码的可读性。
事实上,即使没有加 @FunctionalInterface 注解,只要符合函数式接口的定义就是函数式接口。
在 Spring Boot 框架中,经常使用的 CommandLineRunner、ApplicationRunner 等等都是函数式接口。
二、函数式接口简单应用
示例1:一个简单应用
// 使用 @FunctionalInterface 进行注解
@FunctionalInterface
interface MyFunctionalInterface {
void myMethod();
}
public class FunctionalInterfaceTest {
public static void main(String[] args) {
// 使用 Lambda 表达式创建 MyFunctionalInterface 的实例
MyFunctionalInterface myFunctionalInterface = () -> System.out.println