说明
Java 8为函数式接口引入了一个新注解 @FunctionalInterface
作用
检查错误,当接口 不符合 函数式接口 时,编译器会报错
类比:相当于 @override 注解,让编译期校验覆盖父类的方法是否正确,如果代码写的正确,不加该注解也可以
检查以下错误
该注解只能标记在 有且仅有一个抽象方法 的接口上。
JDK8接口中的 静态方法 和 默认方法,都不算抽象方法。
接口默认继承
java.lang.Object,如果接口显示覆盖Object中方法,那么也 不算抽象方法
提示: 该注解不是必须的,如果一个接口符合 函数式接口 定义,那么加不加该注解都没有影响。加上该注解能够更好地 让编译器进行检查。
注意: 不是函数式接口,但是加上了 @FunctionInterface,那么编译器会报错