【发布时间】:2016-04-22 16:16:15
【问题描述】:
所以假设我在流上使用了一些随机过滤器,最直接的方法是直接输入谓词:
x.stream().filter(e -> e % 2 == 0)
我也可以简单地引用并提前定义谓词:
Predicate<Integer> isEven = e -> e % 2 == 0;
...
x.stream().filter(isEven)
但我也可以使用函数:
private static boolean isEven(Integer integer) {
return integer % 2 == 0;
}
...
x.stream().filter(MyClass::isEven)
据我所知,谓词当然受到更多限制,而函数可能会有副作用等。但是由于像 Venkat Subramaniam 这样的人使用后一种解决方案,我真的想知道:这里的主要区别是什么?
【问题讨论】:
标签: java-8 java-stream predicate