Guava Predicates不能作为java 8流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?
答案 0 :(得分:15)
Guava谓词的apply
方法的方法句柄是一个可用作过滤器的功能接口:
Number first = numbers.stream()
.filter(Predicates.instanceOf(Double.class)::apply)
.findFirst()
.get();