2017-04-09 38 views
7

採用反射法的參考來代替我有這樣的代碼中的IntelliJ:可以在Java

return collection.stream().anyMatch(annotation -> 
         method.isAnnotationPresent(annotation)); 

,編譯器告訴我,「method.isAnnotationPresent(註釋)」可以與方法的引用替換,並且我可以不知道如何去做,因爲它有一個論點。

有誰知道如何做到這一點?

+0

如果IntelliJ告訴你這可以轉換,只需告訴IntelliJ做轉換... – Holger

回答

13

您可以替換代碼中使用的方法引用(看here),如下圖所示:

return collection.stream().anyMatch(method::isAnnotationPresent); 

基本上,您提供的isAnnotationPresent()方法定義Lambda表達式(中anyMatch接受Predicate的方法),並且來自流的值將自動作爲參數傳遞給anyMatch方法。

+0

你是對的!我做過很多次了,也許是因爲我在用反思,我無法像往常一樣思考。謝謝! – Motomine

+1

上面的代碼有效嗎? – developer

+0

我無法嘗試它,因爲它仍在構建,現在我必須找出如何解決另一個問題,但是我用您的定義替換了lambda表達式,並且它完美地編譯。 – Motomine