函数式接口
函数式接口(Functional Interface):有且只有一个未实现的抽象方法的接口。可以通过Lambda表达式来创建函数式接口的对象。
@FuncationInterface注解,此注解就是 Java 8 新增的注解,用来标识一个函数式接口。
有且只有一种抽象方法
public interface MyInterface {
int test();
}
像这种有两个抽象方法,但是有一个是默认实现的方法,所有还是有且只有一个未实现的抽象方法,他也属于函数式接口。
public interface MyInterface {
int test();
default int test2() { //默认实现
return 0;
}
}
这种有两个抽象方法的就不是函数式接口了。
public interface MyInterface {
int test();
int test2();
}
如果担心不知道写的接口是不是函数式接口,可以使用@FuncationInterface注解,如果接口里面写了超过一个为实现的抽象方法会报错。
这里可以用这个注解验证一下,写两个抽象方法,其中一个默认实现。可以看到这样写注解没有报错。