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只能修飾接口,不能修飾其他程序元素。