我一直在尋找到lambda表達式,以及如何傳遞方法,如在Java 8爭論,但我不知道它可能在我的情況:傳遞不同的方法作爲參數在Java中8
我有多個類具有類似的方法,但方法名稱在某些類中是不同的。每個方法都將一個Long作爲表示ID的參數。 所以,我試圖讓:
void setScore(List<Long> nodes, method){
for (Long id : nodes)
System.out.println(method(id));
}
}
這是我想傳遞方法的兩個例子,但我有:
Double DegreeScorer<Long>.getVertexScore(Long id)
Double BetweennessCentrality<Long, Long>.getVertexRankScore(Long id)
我想我已經找到了使用LongConsumer接口的解決方案,但LongConsumer不返回任何值,所以我不能存儲結果。
任何幫助將不勝感激。
更新: 我結束了:
<T> void setScore(List<Long> nodes, LongFunction<T> getScore){
for (Long id : nodes)
System.out.println(getScore.apply(id));
}
}
setScore(nodes, ranker::setVertexScore);
'LongToDoubleFunction'如何? – Tunaki
LongFunction? R是返回類型。 –
gmaslowski
你如何將函數作爲參數傳遞?我的類存儲算法的結果,所以我想先調用ranker.evaluate(),然後傳遞ranker.getVertexScore(Long id)。調用setScore時使用什麼語法? setScore(nodes,ranker.getVertexScore)給了我一個錯誤 – user1171426