いくつかの入力に基づいてリストをフィルタリングする Java コードがあります。現在、ラムダを使用しています。次に例を示します。
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter( compObject -> allowedTags.contains(compObject.getTag()))
.collect(Collectors.toList());
}
私がやりたいことは、フィルター ロジックを別のメソッドに移動して、再利用可能にし、簡単に単体テストできるようにすることです。そこで、フィルター メソッドに渡されるラムダの代わりにメソッド参照を使用したいと考えました。フィルター ロジックがかなり静的な場合 (つまり、許可されたタグのリストがコンパイル時にわかっている場合) は簡単に実行できますが、フィルター内の動的データでこれを行う方法がわかりません。
私が欲しかったのは、メソッド参照を使用してから2番目の動的パラメーターを渡す方法でした。
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter(this::filterByAllowedTags, allowedTags)
.collect(Collectors.toList());
}
それで、私がやりたいことをすることは可能ですか、それともこの状況に間違ってアプローチしている可能性がありますか?