java8 stream四大接口_java8新特性 (λ、stream 与 默认接口方法)

lambda

λ表达式本质上是一个匿名方法,用来方便地实现函数接口。也就是说,λ表达式主要用于替换以前广泛使用的内部匿名类。

让我们来看下面这个例子:

public int add(int x, int y) {

return x + y;

}

转成λ表达式后是这个样子:

(int x, int y) -> x + y;

参数类型也可以省略,Java编译器会根据上下文推断出来:

(x, y) -> x + y; //返回两数之和

或者

(x, y) -> { return x + y; } //显式指明返回值

λ表达式有三部分组成:参数列表,箭头(->),以及一个表达式或语句块。

λ表达式的类型,叫做“目标类型(target type)”。λ表达式的目标类型是“函数接口(functional interface)”,这是Java8新引入的概念。它的定义是:一个接口,如果只有一个显式声明的抽象方法,那么它就是一个函数接口。一般用@FunctionalInterface标注出来(也可以不标)。举例如下:

public interface Runnable { void run(); }

public interface Comparator { int compare(T o1, T o2);}

stream

Stream java.util.Collection.

stream()

返回Stream对象。

Stream java.util.stream.Stream.

filter(Predicate super T> predicate)

从stream中过滤元素,返回的stream由与谓词匹配的元素组成。

void java.util.stream.Stream.

forEach(Consumer super T> action)

对stream中的每一个元素执行action。

boolean java.util.function.

Predicate.

test(T t)

Predicate接口中的方法,评估给定元素是否满足谓词。

void java.util.function.

Consumer.

accept(T t)

Consumer接口中的方法,此方法对给定的元素进行操作。

默认接口方法

通过default关键字给接口的方法提供默认实现。

这样与抽象类的普通方法就差别不大了。

java.util.Collection接口的源代码含有下面的默认接口实现。

defaultStream stream() {         return StreamSupport.stream(spliterator(), false);     }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值