5

我正在尝试通过 org.hamcrest.Matchers 匹配对象的两个不同属性。这里是:

List<LeaveApply> leaveApplyList = Lambda.select(
   allLeaveApplyList,
       Matchers.allOf(
            Lambda.having(
                Lambda.on(LeaveApply.class).getUser().getId(),   
                Matchers.equalTo(userId)), 
            Lambda.having(
                Lambda.on(LeaveApply.class).getDate(),
                Matchers.allOf(
                    Matchers.greaterThanOrEqualTo(fromDate), 
                    Matchers.lessThanOrEqualTo(toDate)))
                 )
              );

它给出了一个 LeaveApply 对象的列表,该对象的 user-id 等于给定的 id,并且 date 小于或等于 to-date 并且大于或等于 from-date。这是工作。我想知道匹配不同属性字段的正确方法吗?

4

1 回答 1

7

据我所知,它应该可以工作。您可以进行两项改进:使用静态导入使其更具可读性并使用having(...).and(...)而不是使用allOf

import static ch.lambdaj.Lambda.*;
import static org.hamcrest.Matchers.*;

List<LeaveApply> leaveApplyList = select(allLeaveApplyList, having(on(LeaveApply.class).getUser().getId(), equalTo(userId)).and(on(LeaveApply.class).getDate(), allOf(greaterThanOrEqualTo(fromDate), lessThanOrEqualTo(toDate)))));
于 2011-04-15T06:29:40.467 回答