我有这个
Predicate
,根据日期筛选我的Task对象:
- Predicate<Task> startDateFiltering = new Predicate<Task>() {
- @Override
- public boolean apply(Task input) {
- return input.getStartDate() != null
- && input.getStartDate().after(date);
- }
- };
只要在上下文中可以访问日期变量,使用它就没有问题.但是,我想让它可重用并将其嵌入到Task类本身中,执行以下操作:
- public static final Predicate<Task> startDateFiltering = new Predicate<Task>() {
- @Override
- public boolean apply(Task input) {
- return input.getStartDate() != null
- && input.getStartDate().after(date);
- }
- };
为了在每次需要时将其作为Task.startDateFiltering访问.但是如何将日期参数传递给它呢?
解决方法
我创建了一个静态工厂方法(或者每次都直接创建一个新实例)
- public static Predicate<Task> startDateFilteringWithDate(final Date date) {
- return new Predicate<Task>() {
- @Override
- public boolean apply(Task input) {
- return input.getStartDate() != null
- && input.getStartDate().after(date);
- }
- };
- }