के बजाय विधि संदर्भ का उपयोग करना मैं "विशेष प्रकार के मनमानी वस्तु के एक उदाहरण विधि के संदर्भ में" अवधारणा के बारे में उलझन में हूं। ओरेकल documentation इस बारे में एक उदाहरण है:बहु तर्क lambda
String[] stringArray = { "Barbara", "James", "Mary", "John", "Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
उदाहरण मैं विधि संदर्भ के इस प्रकार के लिए देखा है में से अधिकांश इस तरह है: अगर लैम्ब्डा की तरह है: x -> x.func()
तो आप इसके ClassOfX::func
तरह लिख सकते हैं। दस्तावेज में उदाहरण का कहना है:
विधि संदर्भ स्ट्रिंग के लिए बराबर लैम्ब्डा अभिव्यक्ति :: compareToIgnoreCase औपचारिक पैरामीटर सूची (स्ट्रिंग एक, स्ट्रिंग ख) है, जहां एक और ख मनमाने ढंग से बेहतर करने के लिए इस्तेमाल नाम हैं होता इस उदाहरण का वर्णन करें। विधि संदर्भ विधि a.compareToIgnoreCase (बी) का आह्वान करेगा।
सवाल यह है: किसी भी दो तर्क लैम्ब्डा (a, b) -> a.func(b)
तरह func
विधि उदाहरण पहला तर्क और लैम्ब्डा का दूसरा तर्क की विधि होना चाहिए के लिए है कि विधि के लिए एक तर्क के रूप पारित हो जाएगा? यदि हमारे पास एकाधिक तर्क लैम्ब्डा है तो func
विधि लैम्ब्डा के पहले तर्क की विधि विधि होनी चाहिए और लैम्ब्डा के अन्य तर्कों को लैम्ब्डा में दिखाई देने के क्रम में func
पर भेजा जाएगा? मेरा मतलब है (a, b, c) -> a.func(b, c)
के बजाय हम ClassOfA::func
मुझे अपनी अंग्रेजी के लिए खेद है। मुझे आशा है कि मैंने समस्या को स्पष्ट कर दिया है।
+1 पूरी तरह से होने के लिए। –