侧边栏壁纸
博主头像
D博主等级

  • 累计撰写 35 篇文章
  • 累计创建 138 个标签
  • 累计收到 3 条评论

Java进阶篇⑧——函数式接口

D
D
2022-04-04 / 0 评论 / 0 点赞 / 756 阅读 / 1,419 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

函数式接口

概述

  • 函数式接口:有且仅有一个抽象方法的接口

  • 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表达式实现),然后返回一个新的值
0

评论区