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