我將使用java 8和他的所有能力來遷移我的代碼。Java 8使用Lambda/Method參考動態
我想動態地使用lambda表達式或方法引用。
例如,我想通過動態方法調用作爲函數參數,並在lambda後使用它。
public <T> List<?> getDynamic(List<T> objects, ?????? myFilter, ??????? myMapper) {
objects.stream()
.filter(myFilter)
.map(myMapper)
.collect(Collectors.toList());
}
getDynamic(customerList, Customer::isEnabled, Customer::getCustomerId);
getDynamic(customerList, c -> c.isEnabled(), c -> getCustomerId());
有沒有辦法做到這一點或喜歡任何更換請嗎?
感謝
---------編輯1 ---------
好感謝的解決方案。
但我忘了1例。我也需要使方法名稱動態。
public <T> List<?> getDynamic(List<T> objects, String myMethodSimpleMapper) {
objects.stream()
.map(T::myMethodSimpleMapper) <------ HOW ?
.collect(Collectors.toList());
}
getDynamic(customerList, "getCustomerId");
我具有存儲在類或枚舉(描述符)的一些性質,我需要使用它們來操縱automaticaly僅使用此特性(字符串)的數據。 有些情況很簡單,我有屬性名稱(我也許可以推斷出相關的getter)。
是否有可能使用lambdas或mathod引用?
'謂詞 super T> myFilter','Function <?超級T,?> myMapper'。 –
是否有一個原因需要將該方法作爲字符串傳遞? – kewne
是的,這是爲了描述我的界面的一些常規類。 所以我使用「描述符」就像在我的表格和表格中使用哪些字段,可見,可編輯等等。 我發現得到的唯一方法是使用字段名稱作爲我的DTO字段的鍵來管理。 – JamesPatageule