我有一些基於某些輸入過濾列表的Java代碼。目前,它採用的是拉姆達,例如:如何將具有動態值的lambda過濾器轉換爲方法引用
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter(compObject -> allowedTags.contains(compObject.getTag()))
.collect(Collectors.toList());
}
我想要做的是過濾邏輯移動到另一個方法,使其可重複使用,容易進行單元測試。所以我想用一個方法引用來代替傳遞給過濾器方法的lambda表達式。如果過濾器邏輯相當靜態(即編譯時已知允許標記的列表),很容易做到,但我無法弄清楚如何在過濾器中使用動態數據來做到這一點。
我想要的是一些方法來使用的方法引用,然後通過第二動力是什麼PARAM即
public List<ComplexObject> retrieveObjectsFilteredByTags(List<String> allowedTags) {
List<ComplexObject> complexObjects = retrieveAllComplexObjects();
return complexObjects
.stream()
.filter(this::filterByAllowedTags, allowedTags)
.collect(Collectors.toList());
}
所以是有可能做什麼,我想還是我可能不正確地處理這個情況呢?
很多很好的選擇在這裏。很好的答案。 – 2014-10-30 06:36:18