Java8函数式接口与@FunctionlInterface
Java8规定:如果接口中只有一个抽象方法(可以包含多个默认方法或多个static方法),该接口就是函数式接口。@FunctionlInterface就是用来指定某个接口必须是函数式接口。例如,如下程序就使用@FunctionlInterface修饰函数式接口。
@FunctionalInterface
public interface FunInterface {
static void foo(){
System.out.println("foo类方法");
}
default void bar(){
System.out.println("bar 默认方法");
}
void test();//只定义一个抽象方法
}
编译上面程序,可能丝毫看不出程序中的@FunctionalInterface有何作用,因为@FunctionalInterface只是告诉编译器检查这个接口,保证该接口只能包含一个抽象方法,否则就会编译出错。@FunctionalInterface主要是帮助程序员避免一些低级错误,比如多个抽象方法。
注意:@FunctionalInterface只能修饰接口,不能修饰其他程序元素。