1

是否可以将参数传递给 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。那可能吗?

谢谢。

4

1 回答 1

4

我怀疑你想要类似的东西:

public static Matcher<SomeObject> createPredicate(final List<String> ids) {
    return new Predicate<SomeObject>() {
        public boolean apply(SomeObject specialObj) {
            return ids.contains(specialObj.getTypeId());
        }
    };
}

你必须使它成为一个方法而不仅仅是一个字段,否则你将无处可通过列表。该参数必须是最终的,以便您可以在匿名内部类中使用它。

于 2013-05-28T08:02:14.407 回答