2015-11-26 20 views
11

मेरे मूल कोड संदर्भ यह है:जावा लैम्ब्डा विधि काम नहीं कर रहा

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

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

लेकिन इंटेलीजे कहते हैं जो मैं कैसे करना भी यकीन नहीं है "विधि संदर्भ के साथ प्रतिस्थापित किया जा सकता है"। मैंने सोचा था कि मैं यह कर जाएगा:

setOnMouseClicked(event -> SomeClass::onClicked); 

लेकिन तब है कि मुझसे कहता है "शून्य एक कार्यात्मक इंटरफ़ेस नहीं है", लेकिन मैं कुछ भी वापस जाने के लिए नहीं करना चाहती। मैं सिर्फ हैंडलर निष्पादित करना चाहता हूं। मैं इसे कैसे ठीक करूं?

धन्यवाद!

उत्तर

30

आप एक विधि संदर्भ के साथ एक लैम्ब्डा अभिव्यक्ति मिश्रण कर रहे हैं।

बदलें

setOnMouseClicked(event -> SomeClass::onClicked); 

setOnMouseClicked(SomeClass::onClicked); 
+0

वाह करने के लिए है कि जल्दी थी, धन्यवाद !! – Mayron

+6

@ मैरॉन FIY, IntelliJ आपके लिए विधि संदर्भ के साथ एक लैम्ब्डा अभिव्यक्ति को बदल सकता है (जब यह संभव हो)। अभिव्यक्ति – Prim

+0

@Prim धन्यवाद पर बस Alt + शॉर्टकट दर्ज करें धन्यवाद, बस इसे आज़माएं। जानना बहुत उपयोगी है! – Mayron

संबंधित मुद्दे