2015-11-26 14 views
11

mio codice originale è questo:metodo Java lambda di riferimento non funziona

private static void onClicked(MouseEvent event) { 
    // code to execute 
} 

// somewhere else in the program: 
setOnMouseClicked(event -> SomeClass.onClicked(event)); 

Ma IntelliJ dice "può essere sostituito con il metodo di riferimento", che io non sono troppo sicuro di come fare. Ho pensato di fare questo:

setOnMouseClicked(event -> SomeClass::onClicked); 

Ma allora che mi dice "vuoto non è un'interfaccia funzionale", ma io non voglio tornare nulla. Voglio solo che il gestore esegua. Come posso risolvere questo?

Grazie!

risposta

30

Si sta mescolando un'espressione lambda con un riferimento al metodo.

Change

setOnMouseClicked(event -> SomeClass::onClicked); 

a

setOnMouseClicked(SomeClass::onClicked); 
+0

wow che è stato rapido, grazie !! – Mayron

+6

@Mayron FIY, IntelliJ può cambiare un'espressione lambda con il metodo di riferimento per te (quando è possibile). Basta usare alt + inserire scorciatoia sull'espressione – Prim

+0

@Prim Grazie, appena provato. Molto utile sapere! – Mayron

Problemi correlati