LambdaJ:为什么我们不能在选择子句中应用操作?


select(list, having(on(Integer.class).intValue() % 2, equalTo(0)));

上面的代码抛出异常。

%操作必须在 select(( 之前进行评估,而您希望为每个条目评估它。 即你想要的是Java 8中可用的闭包。

如果你使用循环,你可以写

for(int i: list)
    if(i % 2 == 0)
       // do something with i.

Java的语法通常使使用循环成为最干净的解决方案,理想情况下你应该有一个选择(它也快得多(。

您需要

定义自己的匹配器:

Matcher<Integer> even = new Predicate<Integer>() {         
 public boolean apply(Integer item) {                 
 return item % 2 == 0;         
} };

改编自:http://code.google.com/p/lambdaj/wiki/LambdajFeatures

相关内容

  • 没有找到相关文章

最新更新