第三章(2) JAVA8 api为我们提供的函数式接口

   咱们书接上回,上回咱们说到,Java 8的库设计师帮你在java.util.function包中引入了几个新的函数式接口。我们接下来会介绍Predicate、Consumer和Function。

    1.Predicate(谓词)

    关于谓词,我们之前在第二章中说过,它是返回布尔值的一种抽象方法。那么在java8中,已经为我们提供了这个接口了,我们直接拿来用就可以了,如下

使用案例:

2. Consumer(消费者)

顾名思义,消费者,就是把东西消耗消费掉,或者说使用掉,当你要对某个对象执行某些操作的时候,你就可以使用它。

代码示例:

3.Function(函数)

java.util.function.Function<T, R>接口定义了一个叫作apply的方法,它接受一个泛型T的对象,并返回一个泛型R的对象。如果你需要定义一个Lambda,将输入对象的信息映射到输出,就可以使用这个接口(比如提取猪对象的重量,或把字符串映射为它的长度)。在下面的代码中,我们向你展示如何利用它来创建一个map方法,以将一个String列表映射到包含每个String长度的Integer列表。

代码示例:

      除了这三个最基本的函数式接口以外,java8还提供了很多基于这三个函数的变种,比如我们都知道这三个基本的函数式接口都用到了泛型,但是在java中泛型只对于引用类型有效,故对于基本数据类型比如int,我们需要对其装箱处理(Integer),尽管java中的装箱与拆箱都是自动进行的,但是这用做不可避免的要消耗一些内存,所以有了诸如DoublePredicate、IntConsumer、LongBinaryOperator、IntFunction等专门处理基本数据类型的接口等等,当然还有其他很多java8提供的函数式接口用于不同的用途,但是基本上都和本章详细介绍的三个基本接口差不多,或者说是这三个的变种,搞明白了这三个,其他的接口也能轻易理解哦,具体可以查看java8文档。

4.Supplier(供应商) 

5.关于lambda异常处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值