私は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);
}
は、より良い方法はありますか?
のJava 8で「createInversePredicate」などのユーティリティメソッドを
Optional<Predicate<File>>
代わりに@Nullable
使用できますか?そうでない場合、私はそれを問題として提案すべきですか? –これは可能ですが、非常に一般的な使用例のようには見えません。 –