जावा -8 के बारे में बात करते समय आप कार्यात्मक इंटरफेस (एकल सार विधि के साथ इंटरफ़ेस) को संदर्भित करने के लिए "फ़ंक्शन" शब्द का उपयोग कर सकते हैं, इस तरह के इंटरफ़ेस को लागू करने वाली कक्षा या कार्यात्मक इंटरफ़ेस प्रकार की अभिव्यक्ति (लैम्ब्डा अभिव्यक्ति समेत) विधि संदर्भ)। हालांकि आपको कार्यों के रूप में विधियों को कॉल नहीं करना चाहिए। यह पिछले जावा संस्करणों की तुलना में और भी महत्वपूर्ण हो गया है जैसे कि आप जावा -7 संबंधित चर्चा में "फ़ंक्शन" शब्द देखते हैं, आप मान सकते हैं कि "विधि" का अर्थ था। लेकिन जावा -8 में लोग सोच सकते हैं कि आप कार्यात्मक इंटरफ़ेस के बारे में बात कर रहे हैं, विधि के बारे में नहीं।
तो यह कहना ठीक है:
Stream.map
विधि एक पैरामीटर के रूप में एक समारोह स्वीकार करता है। आपूर्तिकर्ता, संचायक, combiner और फिनिशर:
या
एक Collector
इंटरफ़ेस चार कार्य समेकित करता है।
या
मैं Stream.filter
विधि के लिए Objects::nonNull
समारोह गुजरती हैं।
लेकिन निम्नलिखित भ्रामक ध्वनि होगा:
जब मैं Math.sqrt
फ़ंक्शन का उपयोग मैं एक अजीब अपवाद मिलता है।
स्रोत
2015-11-05 10:12:34
मैंने सोचा कि यह केवल सी/सी ++ में "फ़ंक्शन" और जावा में "विधि" का उपयोग करने के लिए शब्दावली सम्मेलन का मामला था। –
मुझे लगता है [यह सवाल] (http://stackoverflow.com/q/155609/1743880) वास्तव में उसमें शामिल है: भले ही इसमें स्पष्ट रूप से जावा 8 'फ़ंक्शन का उल्लेख न हो, फिर भी वे उत्तर के अर्थ में कार्य कर रहे हैं। – Tunaki
एक और नोट पर, वस्तुओं को कक्षाएं और इसके विपरीत कहा जाना चाहिए, क्योंकि 'ऑब्जेक्ट' एक वर्ग है और 'class.class' एक वस्तु है? – Kayaman