小编Lai*_*uan的帖子

我可以结合java8(流,lambda)和番石榴?

在处理转换时(例如:transform List<People> peopleto List<Integer> ages,where People是包含属性的类age),通常有两种方法(对我而言):

  1. 使用java8:

    people.stream().map(p -> p.getAge()).collect(toList());

  2. 或用户guava2:

    Lists2.transform(people, People2AgeTransformer.INSTANCE);其中People2AgeTransformer是一个变换器,它实现了Function接口以返回年龄.

最近,我偶然发现java8和guava可以合并,因此代码可以是:

Lists2.transform(people, p->p.getAge());
Run Code Online (Sandbox Code Playgroud)

这段代码符合并运行没有任何错误,这让我感到困惑.该方法Lists2.transform()要求第二个args是接口的实现com.google.common.base.Function,而java8 lambda实际上是接口的实现java.util.function.Function.(好吧,它们都声明了一个B apply(A input)将A转换为B 的方法.)

我不明白为什么这会起作用,因为它们是不同包的两个不同界面.

java lambda guava java-stream

0
推荐指数
1
解决办法
1311
查看次数

标签 统计

guava ×1

java ×1

java-stream ×1

lambda ×1