【函数式接口】

函数式接口:有且仅有一个抽象方法的接口(允许有其他的方法)
    @FunctionalInterface 用来标记一个函数式接口
    
函数式接口的使用:一般结合Lambda表达式使用
    使用Lambda表达式的前提,就你是必须要有一个函数式接口。使用场景有下面两种
    1. 函数式接口作为方法的参数使用
        调用这个方法时,可以传递Lambda表达式。
        new Thread(()->{....}).start();
    
    2. 函数式接口作为方法的返回值类型
        方法实际返回的,可以是Lambda表达式。
        public Comparator<String> getComparator(){
            //返回Lambda表达式
            return (String o1,String o2)->{return o1.compareTo(o2);}
        }
        
    总结:不管函数式接口作为参数还是返回值,都可以让Lambda表达式作为接口的实例。

函数式接口的实际运用
    在API中已经定义好了很多个函数式接口,也有很多方法在使用函数式接口作为参数。
    所以我们更重要关注的是,调用方法时传递Lambda表达式即可.

Lambda的格式的几种写法
    1. 标准写法
        (Type1 param1,Type2 param2)->{  return 语句体... ;};
    2. 省略数据类型
        (param1,param2)->{  return 语句体... ;};
    3. {}的语句体只有一条语句的时候,省略{}、return 
        (param1,param2)->语句体;
    4. 参数只有一个的情况,()可以省略
        param->语句体;
            
API中常用的函数式接口
    Supplier<T> 是一个生产型接口,有一个T get()可以返回一个想要的数据。
    
    Consumer<T> 是一个消费型接口,
        有一个accept(T t)可以消费一个指定类型的数据。
        有一个 Consumer<T> andThen(Consumer<T> con) 用于连接一个Consumer接口,进行连续消费。

    Predicat<T>接口 是一个判断型接口
        有一个boolean test(T t) 可以用于对指定的数据进行校验得到boolean类型的结果
        Predicat<T> and(Predicat<T> pre) 可以用于连接两个条件,进行&&运算
    
    Function<R,T> 是一个转换型接口
        有一个T apply(R r) 可以用来把一个类型的数据转换为另一个类型的数据
        有一个Function<T,W> andThen(Function<T,W> fun)
        

 

总结:

1. 函数式接口:有且仅有一个抽象方法的接口(允许有其他方法)
    
2. 函数式接口的使用
    1) 作为方法的参数使用:实际参数传递Lambda表达式
    2) 作为方法的返回值使用:实际返回传递Lambda表达式
    
3. 常用的函数式接口
    Supplier<T>  生产型接口
        T get() 可以获取一个想要的T类型的数据
    
    Consumer<T>  消费型接口
        void accept(T t) 用于消费一个T类型的数据
        Consumer<T> andThen(Consumer<T> con) 用于连接两个Consumer<T>接口进行连续消费
    
    Predicate<T>  判断型接口
        boolean test(T t) 用于校验T类型的数据是否符合条件
        Predicate<T> and(Predicate<T> pre)    用于连接两个Predicate<T>接口进行连续校验(类似于&&运算,两个条件都得满足)
        Predicate<T> or(Predicate<T> pre) 用于连接两个Predicate<T>接口进行连续校验(类似于||运算,只一个条件即可)
        Predicate<T> negate() 对test()校验的结果取反
    
    Function<T,R>  转换型接口
        R apply(T t) 把T类型的数据转换为R类型的数据
        Function<R,W> andThen(Function<R,W> fun) 用于连接两个Function<R,W>接口进行连续消费
            第一次转换:把T类型转换为R类型
            第二次转换:把R类型转换为W类型
    
    
            

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子丶Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值