@FunctionalInterface 是 Java 8 中新增的注解,它用于标记一个接口为函数式接口。所谓函数式接口就是只包含一个抽象方法的接口。
@FunctionalInterface 注解的作用有两个:
1、编译器会检查被该注解标记的接口是否符合函数式接口的定义,即如果接口中存在多个抽象方法或者没有抽象方法,则编译器会报错。
2、该注解可以让开发人员更方便地知道该接口的设计意图,从而更好地使用该接口。
例:
/**
* 定义一个函数式接口
*/
@FunctionalInterface
public interface ServiceCallBack {
// 回调,主要用来在函数执行前做一些个性化的处理动作
void onCall();
}
public static void executeMethod(ServiceCallBack serviceCallBack) {
// 执行一些操作
....
System.out.pringln("执行方法前");
serviceCallBack.oncall();
System.out.pringln("执行方法后");
....
// 执行一些操作
}
public static void testMethod() {
System.out.pringln("我是一个方法");
}
public static void main(String[] args) {
executeMethod(() -> {
testMethod();
}
}
输出结果:
执行方法前
我是一个方法
执行方法后