如何在java 8 stream api中使用guava Predicates作为过滤器

前端之家收集整理的这篇文章主要介绍了如何在java 8 stream api中使用guava Predicates作为过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Guava Predicates不能作为java 8 streaming API的过滤器使用.

例如,这是不可能的:

Number first = numbers.stream()
    .filter( com.google.common.base.Predicates.instanceOf(Double.class)))
    .findFirst()
    .get();

当guava谓词转换为java 8谓词时,如何可能,如下所示:

public static <T> Predicate<T> toJava8(com.google.common.base.Predicate<T> guavaPredicate) {
  return (e -> guavaPredicate.apply(e));
}

Number first = numbers.stream()
    .filter( toJava8( instanceOf(Double.class)))
    .findFirst()
    .get();

问题:有没有更优雅的方法在java 8中重用guava Predicates?

解决方法

Guava谓词的apply方法方法句柄是一个可用作过滤器的功能接口:
Number first = numbers.stream()
    .filter(Predicates.instanceOf(Double.class)::apply)
    .findFirst()
    .get();

猜你在找的Java相关文章