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

posted @ 2020-04-24 15:05  春刀c  阅读(1287)  评论(0编辑  收藏  举报