2015-01-03 24 views
5

के लिए हम कैसे सेटर के लिए लैम्ब्डा अभिव्यक्ति बनाने के बारे मेंलैम्ब्डा अभिव्यक्ति सेटर

Function<Student, String> studentNameGetter = Student::getName; 

नीचे के रूप में गेटर के लिए अभिव्यक्ति लैम्ब्डा कर सकते हैं?

उत्तर

16

मुझे यकीन नहीं है कि आपटर के लिए लैम्ब्डा अभिव्यक्ति बनाकर क्या मतलब है।

ऐसा लगता है कि आप ऐसा करने की कोशिश कर रहे हैं एक उपयुक्त कार्यात्मक इंटरफ़ेस के विधि संदर्भ को असाइन करना। उस स्थिति में, सबसे अच्छा मैच BiConsumer:

BiConsumer<Student, String> studentNameSetter = Student::setName; 
+1

क्या आप समझा सकते हैं कि यह क्यों काम करता है? मैंने सोचा कि 'बायकंसमेर <छात्र, स्ट्रिंग>' केवल कुछ (जैसे छात्र ए, स्ट्रिंग बी) -> a.setName (बी) 'को असाइन किया जा सकता है। लेकिन 'सेटनाम' के हस्ताक्षर में केवल एक पैरामीटर है। – T3rm1

+0

@ T3rm1 यह काम करता है क्योंकि 'छात्र ए' एक पैरामीटर है और 'setName' में एक पैरामीटर है। तो उपभोक्ता लक्ष्य ऑब्जेक्ट के साथ-साथ सेटटर पैरामीटर को इसके पैरामीटर के रूप में लेता है। – Mukund

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