用方法引用替换lambda表达式

时间:2016-10-07 11:17:14

标签: java intellij-idea lambda java-8 method-reference

我有一个静态方法,它接受参数Stream<Double> stream。来自arraylist.stream()Arrays.stream(array)

该方法的工作是返回可被3整除的所有整数的总和。

return stream.filter(i -> i.intValue() % 3 == 0).mapToInt(i -> i.intValue()).sum()

此方法有效,但IntelliJ建议如下:

  

此检查报告可以用方法参考替换的lambda。

我不太熟悉方法引用,尤其是使用类名方案的引用实例方法。

我尝试了下面的错误。

stream.filter(i -> i.intValue() % 3 == 0).mapToInt(Integer::intValue).sum()

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

正如您所说,参数流的类型为Double,因此您应该

stream.mapToInt(Double::intValue).filter(i -> i % 3 == 0).sum()

因为你打电话给Double class&#39; intValue函数。