select(list, having(on(Integer.class).intValue() % 2, equalTo(0)));
上面的代码抛出异常。
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