इसका कारण यह है कि कार्यात्मक इंटरफेस के अर्थ को समझने में आपको कठिनाई हो रही है, जैसे java.util.functionकि यहाँ परिभाषित इंटरफेस का कोई अर्थ नहीं है! वे मुख्य रूप से संरचना का प्रतिनिधित्व करने के लिए मौजूद हैं , न कि शब्दार्थ ।
यह अधिकांश जावा एपीआई के लिए atypical है। विशिष्ट जावा एपीआई, जैसे कि एक वर्ग या इंटरफ़ेस, का अर्थ है, और आप इसके लिए संचालन को समझने के लिए एक मानसिक मॉडल विकसित कर सकते हैं जो इसका प्रतिनिधित्व करता है और इसका उपयोग करता है। java.util.Listउदाहरण के लिए विचार करें । A Listअन्य वस्तुओं का एक कंटेनर है। उनके पास एक अनुक्रम और एक सूचकांक है। सूची में शामिल वस्तुओं की संख्या को वापस कर दिया जाता है size()। प्रत्येक ऑब्जेक्ट में 0..size-1 (समावेशी) सीमा में एक सूचकांक है। सूचकांक i पर वस्तु को कॉल करके प्राप्त किया जा सकता है list.get(i)। इत्यादि।
कार्यात्मक इंटरफेस में java.util.functionऐसा कोई अर्थ नहीं है। इसके बजाय, वे ऐसे इंटरफेस हैं जो किसी फ़ंक्शन की संरचना का प्रतिनिधित्व करते हैं , जैसे कि तर्कों की संख्या, रिटर्न मान की संख्या और (कभी-कभी) कि क्या तर्क या रिटर्न वैल्यू एक आदिम है। इस प्रकार हमारे पास कुछ ऐसा है Function<T,R>जो एक फ़ंक्शन का प्रतिनिधित्व करता है जो टाइप T का एकल तर्क लेता है और प्रकार R का मान लौटाता है । बस। वह कार्य क्या करता है? खैर, यह कुछ भी कर सकता है ... जब तक यह एक ही तर्क लेता है और एक ही मूल्य देता है। यही कारण है कि इसके लिए विनिर्देश Function<T,R>"एक तर्क को स्वीकार करता है जो एक तर्क को स्वीकार करता है और एक परिणाम पैदा करता है" की तुलना में थोड़ा अधिक है।
स्पष्ट रूप से, जब हम कोड लिख रहे होते हैं, तो इसका अर्थ होता है, और इसका अर्थ कहीं से आना होता है। कार्यात्मक इंटरफेस के मामले में, अर्थ उस संदर्भ से आता है जिसमें वे उपयोग किए जाते हैं। Function<T,R>अलगाव में इंटरफ़ेस का कोई अर्थ नहीं है। हालांकि, java.util.Map<K,V>एपीआई में, निम्नलिखित है:
V computeIfAbsent(K key, Function<K,V> mappingFunction)
(संक्षिप्तता के लिए वाइल्डकार्ड्स)
आह, यह उपयोग Function"मैपिंग फ़ंक्शन" के रूप में है। वह क्या करता है? इस संदर्भ में, यदि keyमानचित्र में पहले से मौजूद नहीं है, तो मैपिंग फ़ंक्शन को कहा जाता है और इसे कुंजी सौंप दिया जाता है और मान उत्पन्न करने की अपेक्षा की जाती है, और परिणामस्वरूप कुंजी-मूल्य जोड़ी को मानचित्र में डाला जाता है।
इसलिए आप Function(या उस मामले के लिए किसी भी अन्य कार्यात्मक इंटरफेस) के विनिर्देश को नहीं देख सकते हैं और वे जो भी चाहते हैं उसे समझने का प्रयास करेंगे। आपको यह देखना होगा कि वे अन्य APIs में कहाँ उपयोग किए जाते हैं, यह समझने के लिए कि उनका क्या मतलब है, और यह अर्थ केवल उस संदर्भ पर लागू होता है।
ConsumerऔरSupplierतुम भी खोज कर सकते हैं ट्यूटोरियल के लिएConsumer...