@FunctionalInterface
:函数式接口的注解如果方法的参数是一个函数式接口,则可以使用Lambda表达式作为参数传递
范例:
// Runnable函数式接口作为方法的形式参数
public class RunnableDemo{
public static void main(String[] args){
useRunnable(() -> System.out.println("多线程程序启动了"));
}
private static void useRunnable(Runnable r){
new Thread(r).start;
}
}
如果方法的返回值是一个函数式接口,则可以使用Lambda表达式作为结果返回
范例:
// 返回函数式接口Comparator(比较器)
public static Comparator<String> getComparator(){
return (s1,s2) -> s1.length() - s2.length();
}
Supplier<T>
:包含一个无参的方法
T get()
:获得结果Supplier<T>
接口也被称为生产型接口,如果指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据Consumer<T>
:包含两个方法
void accept(T t)
:对给定的参数执行此操作default Consumer<T> andThen(Consumer after)
:返回一个组合的Consumer,依次执行此操作,然后执行after操作Consumer<T>
接口也被称为消费型接口,它消费的数据的数据类型由泛型指定Predicate<T>
:常用的四个方法
boolean test(T t)
:对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值default Predicate<T> negate()
:返回一个逻辑的否定,对应逻辑非default Predicate<T> and(Predicate other)
:返回一个组合判断,对应短路与default Predicate<T> or(Predicate other)
:返回一个组合判断,对应短路或Predicate<T>
接口通常用于判断参数是否满足指定的条件Function<T,R>
:常用的两个方法
R apply(T t)
:将此函数应用于给定的参数default <V> Function andThen(Function after)
:返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果Function<T,R>
接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值