Java 我可以将arg传递给自定义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()); }

是否可以将参数传递给lambdaj谓词

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,以便可以在匿名内部类中使用它