函数式接口在Java中是指:有且仅有一个抽象方法的接口。
函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。
只要确保接口中有且仅有一个抽象方法即可:
修饰符 interface 接口名称 {public abstract 返回值类型 方法名称(可选参数信息);
// 其他非抽象方法内容
}
public abstract
是可以省略的,所以定义一个函数式接口很简单:public interface MyFunctionalInterface {
void myMethod();
}
@Override
注解的作用类似,Java 8中专门为函数式接口引入了一个新的注解:@FunctionalInterface
。该注解可用于一个接口的定义上:@FunctionalInterface
public interface MyFunctionalInterface {
void myMethod();
}注意的是,即使不使用该注解,只要满足函数式接口的定义,这仍然是一个函数式接口,使用起来都一样。