のコレクションがPredicates
ありますList<Predicate<File>>
。次に、単一File
のファイルがあり、ファイルに一致する述語 (存在する場合) を取得する必要があります。私は using の方針に沿って考えていましIterables.find()
たが、もちろんそれは aPredicate
に渡す値ではありません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);
}
より良い方法はありますか?