是否可以将参数传递给lambdaj谓词?
public static Matcher<SomeObject> isSpecialObject = new Predicate<SomeObject>() {
public boolean apply(SomeObject specialObj) {
return LIST_OF_SPECIAL_IDS.contains(specialObj.getTypeId());
}
};
我想修改上面的谓词,这样我就可以传入一个列表,而不是使用静态列表LIST_OF_SPECIAL_IDS。这可能吗?
谢谢。
我猜你想要这样的东西:
public static Matcher<SomeObject> createPredicate(final List<String> ids) {
return new Predicate<SomeObject>() {
public boolean apply(SomeObject specialObj) {
return ids.contains(specialObj.getTypeId());
}
};
}
你必须使它成为一个方法而不仅仅是一个字段,否则你将无处传递列表。该参数必须为final,以便您可以在匿名内部类中使用它。