2013-05-28 96 views
1

是否可以將參數傳遞給lambdaj Predicate?我可以將arg傳遞給自定義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

我懷疑你想要的東西,如:

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

你要使它成爲一個方法,而不僅僅是一個領域,否則你得無處可通過列表。該參數必須是最終的,以便您可以在匿名內部類中使用它。

相關問題