函数式接口
只有一个抽象方法的接口。这样的接口可以用作Lambda表达式的类型,并且可以被注解@FunctionalInterface标记,以确保接口确实符合函数式接口的要求。
接口中,属性的默认修饰符是public static final,方法的默认修饰符是public abstract。接口类也可以用abstract修饰,默认不写。
Java8常见的函数式接口
- Supplier:T get();表示一个不接受任何参数并返回一个结果的函数。
- Consumer:void accept(T t);表示一个接受单个输入参数而不返回结果的函数。
- Function<T, R>:R apply(T t);表示一个接受一个参数并产生一个结果的函数。
- Predicate:boolean test(T t);表示一个接受一个参数并返回一个布尔值的函数。
- BiFunction<T, U, R>:R apply(T t, U u);表示一个接受两个参数并产生一个结果的函数。
- BiConsumer<T, U>:void accept(T t, U u);表示一个接受两个参数而不返回结果的函数。
- Runnable:void run();无参数,无返回,实现线程的接口。
- …