我有一個Predicates
的集合,說List<Predicate<File>>
。然後我有一個File
,我需要獲取與該文件匹配的謂詞(如果有的話)。我正在考慮沿着使用Iterables.find()
的方向,但當然這需要Predicate
沒有值傳入Predicate
。我想過實施以下內容,但不知道是否已經存在一種機制。查找匹配的謂詞。謂詞的謂詞?
public static <T> Predicate<Predicate<? super T>> createInversePredicate(
final T value) {
return new Predicate<Predicate<? super T>>() {
@Override
public boolean apply(Predicate<? super T> input) {
return input.apply(value);
}
};
}
這將使我做到以下幾點:
private List<Predicate<File>> filters = ...;
@Nullable
Predicate<File> findMatching(File file){
return Iterables.find(filters, createInversePredicate(file), null);
}
有沒有更好的辦法?
使用
Optional<Predicate<File>>
代替@Nullable
它已經有像「createInversePredicate」實用方法?如果不是,我應該將其作爲一個問題提出建議嗎? –你可以,但它似乎不是一個非常常見的用例。 –