Java 我可以将arg传递给自定义Lambdaj谓词吗?
是否可以将参数传递给lambdaj谓词Java 我可以将arg传递给自定义Lambdaj谓词吗?,java,collections,predicate,lambdaj,Java,Collections,Predicate,Lambdaj,是否可以将参数传递给lambdaj谓词 public static Matcher<SomeObject> isSpecialObject = new Predicate<SomeObject>() { public boolean apply(SomeObject specialObj) { return LIST_OF_SPECIAL_IDS.contains(specialObj.getTypeId()); }
public static Matcher<SomeObject> isSpecialObject = new Predicate<SomeObject>() {
public boolean apply(SomeObject specialObj) {
return LIST_OF_SPECIAL_IDS.contains(specialObj.getTypeId());
}
};
公共静态匹配器isSpecialObject=新谓词(){
公共布尔应用(SomeObject SpecialLobj){
返回特殊ID.contains的列表(specialLobj.getTypeId());
}
};
我想修改上面的谓词,以便传入一个列表,而不是使用特殊ID的静态列表。可能吗
谢谢。我想你想要的是:
public static Matcher<SomeObject> createPredicate(final List<String> ids) {
return new Predicate<SomeObject>() {
public boolean apply(SomeObject specialObj) {
return ids.contains(specialObj.getTypeId());
}
};
}
公共静态匹配器createPredicate(最终列表ID){
返回新谓词(){
公共布尔应用(SomeObject SpecialLobj){
返回id.contains(specialLobj.getTypeId());
}
};
}
你必须使它成为一个方法,而不仅仅是一个字段,否则你将无处通过列表。参数必须是final,以便您可以在匿名内部类中使用它。我怀疑您想要的是:
public static Matcher<SomeObject> createPredicate(final List<String> ids) {
return new Predicate<SomeObject>() {
public boolean apply(SomeObject specialObj) {
return ids.contains(specialObj.getTypeId());
}
};
}
公共静态匹配器createPredicate(最终列表ID){
返回新谓词(){
公共布尔应用(SomeObject SpecialLobj){
返回id.contains(specialLobj.getTypeId());
}
};
}
你必须使它成为一个方法,而不仅仅是一个字段,否则你将无处通过列表。参数必须是final,以便可以在匿名内部类中使用它