我可以传递一个参数到自定义Lambdaj谓词吗?



是否可以将参数传递给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,以便您可以在匿名内部类中使用它。

相关内容

  • 没有找到相关文章

最新更新