2
如何創建一個方法來接受比較器的通配符作爲參數,然後捕獲該類並使用比較器?傳遞和投射比較器作爲使用Lambda的方法的參數
public List<String> myFilter(Comparator<?> comp, Object value, Class c){
return myList.stream()
.filter(s->
comp.compare(c.cast(s), c.cast(value))>=0
).collect(toList());
}
編輯: 好吧,其實,安德魯的回答很有意思,工作得很好:) 然而,鑑於評論,我真的應該想的是:而不是試圖在方法中投,期望,中投已經比較
所以內完成這將給:
public List<String> filter(Comparator<String> comp){
return myList.filter(s->comp.compare(s, null)>=0).collect(toList());
}
,並調用它時,這應該是像
List<String> myNewList= filter((String s1, String s2)->{
try{
int i=Integer.parseInt(s1);
return Integer.compare(i, myRealCompareValue);
}catch(Exception e){
e.printStackTrace();
return null;
});
它看起來並不很漂亮,雖然....
什麼是'myList'的類型以及如何申報? – assylias
你不能。要麼比較器輸入正確,要麼沒有未經檢查的操作就不能使用它。 – Holger
字符串。它在我的類的構造函數中聲明,它也接受列表作爲參數。 –
Myoch