java8 lambda表达式-@FunctionalInterface注解

说明

Java 8为函数式接口引入了一个新注解 @FunctionalInterface

作用

检查错误,当接口 不符合 函数式接口 时,编译器会报错

类比:相当于 @override 注解,让编译期校验覆盖父类的方法是否正确,如果代码写的正确,不加该注解也可以

检查以下错误

  1. 该注解只能标记在 有且仅有一个抽象方法 的接口上。

  2. JDK8接口中的 静态方法 和 默认方法,都不算抽象方法。

  3. 接口默认继承 java.lang.Object,如果接口显示覆盖 Object 中方法,那么也 不算抽象方法

提示: 该注解不是必须的,如果一个接口符合 函数式接口 定义,那么加不加该注解都没有影响。加上该注解能够更好地 让编译器进行检查。

注意: 不是函数式接口,但是加上了 @FunctionInterface,那么编译器会报错


原文出处:/show_1IX362OP95rQ.html