Java 函数式接口(十三)

函数式接口

概述

  • 函数式接口:有且仅有一个抽象方法的接口
  • 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 表达式实现),然后返回一个新的值
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 函数式接口
    1 引用
  • Supplier
    1 引用
  • Consumer
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...