函数接口
Java8新特性提供了函数式接口,用于更好的支持函数式编程。
定义
所谓函数式接口就是只有一个抽象方法的接口。Java8中可以通过注解(@FunctionalInterface)来限定它(即便不加注解,只有一个抽象方法默认也是函数式接口)。
比如:
public interface MyInterface {
void myFunction();
}
加上注解@FunctionalInterface后,当超出一个抽象方法时,直接编译报错。
@FunctionalInterface
public interface MyInterface {
void myFunction();
}
默认方法
Java8运行接口有默认方法,用default 关键字修饰即可,当然可以有多个默认方法。注意,默认方法只能是public,且默认是public。
@FunctionalInterface
public interface MyInterface {
void myFunction();
default void defaultFunction1() {
System.out.println("Interface : default function1");
}
default void defaultFunction2() {
System.out.println("Interface : default function2");
}
}
静态方法
Java8支持接口有静态方法,另外调用时,使用接口名调用静态方法。注意,默认方法只能是public,且默认是public。@FunctionalInterface
public interface MyInterface {
void myFunction();
static void staticFunction() {
System.out.println("Interface : staticFunction");
}
}
与类的静态方法调用方式一样:
MyInterface.staticFunction();
使用
虽然函数式接口提供了这些功能,不过使用时需要更加小心。比如多个接口的继