我有这个
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); } }; }