我最近上大量使用由番石榴提供收集过滤功能的项目工作,但我发现这样的事情就不会产生预期的行为:我可以评估谓词变适用方法
Predicate<ProductClassDTO> secLevelPredicate = new Predicate<ProductClassDTO>() {
@Override
public boolean apply(ProductClassDTO pcLevel2) {
if (pcLevel2.getFatherNodeSid() != null)
return pcLevel2.getFatherNodeSid() == dto.getSid();
else
return false;
}
};
DTO对象是外部循环中的对象,但仍然可以访问。
该应用方法的返回值永远不会以True出现,但如果我将dto.getSid()替换为1740这样的实数,这是从db获得的父节点号,那么结果就很好。
所以我认为我不能在apply()中评估变量?
我注意到apply()的javadoc中有一行说:
它的执行不会引起任何可观察到的副作用
如果是这种关键,这个问题?
是的,我忘了我使用整型而不是值,一切都蛮好的,你给这里的改善是非常valuable.Appreciated。 – Lopakhin