函数式接口
概述
- 函数式接口:有且仅有一个抽象方法的接口
- Java 中的函数式编程体现就是 Lambda 表达式,所以函数式接口就是可以适合于 Lambda 使用的接口
- 只有确保接口中有且仅有一个抽象方法,Java 中的 Lambda 才能顺利地进行推导
@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 接口
Supplier<T>
:包含一个无参的方法T get()
:获得结果- 该方法没有参数,它会按照某种实现逻辑(由 Lambda 表达式实现)返回一个数据
Supplier<T>
接口也被称为生产型接口,如果指定了接口的泛型是什么类型,那么接口中的 get 方法就会生产什么类型的数据
Consumer 接口
Consumer<T>
:包含两个方法void accept(T t)
:对给定的参数执行此操作default Consumer<T> andThen(Consumer after)
:返回一个组合的 Consumer,依次执行此操作,然后执行 after 操作Consumer<T>
接口也被称为消费型接口,它消费的数据的数据类型由泛型指定
Predicate 接口
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 接口
Function<T,R>
:常用的两个方法R apply(T t)
:将此函数应用于给定的参数default <V> Function andThen(Function after)
:返回一个组合函数,首先将该函数应用于输入,然后将 after 函数应用于结果Function<T,R>
接口通常用于对参数进行处理,转换(处理逻辑由 Lambda 表达式实现),然后返回一个新的值
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于