मेरी प्रोजेक्ट में एक निश्चित पुस्तकालय है जिसका उपयोग मैं करता हूं। इस पुस्तकालय में एक इंटरफेस है जिसमें लगभग 15 तरीके हैं।क्या एक श्रोता का प्रतिनिधित्व करने वाले इंटरफ़ेस के तरीकों के लिए डिफ़ॉल्ट कार्यान्वयन जोड़ना ठीक है?
इस इंटरफेस के प्रयोजन यह कुछ घटनाओं है कि पुस्तकालय में उत्पन्न कर रहे हैं के लिए सदस्यता के लिए संभव बनाने के लिए है। एप्लिकेशन में श्रोता वर्ग इस इंटरफ़ेस को कार्यान्वित कर सकता है और ईवेंट प्राप्त करने के लिए लाइब्रेरी में श्रोता के रूप में स्वयं को पंजीकृत कर सकता है।
इस इंटरफ़ेस में सभी विधियां वास्तव में घटनाएं हैं। ऐसे श्रोताओं को हो सकता है जिन्हें इंटरफेस में कई घटनाओं से केवल एक या दो घटनाएं प्राप्त करने की आवश्यकता हो। हालांकि श्रोता केवल कुछ घटनाओं में रुचि रखते हैं, श्रोता को इंटरफ़ेस को विस्तारित करते समय सभी विधियों को लागू करना होता है।
तो मैं इंटरफ़ेस में तरीकों को खाली डिफ़ॉल्ट कार्यान्वयन जोड़ने के लिए इस पुस्तकालय के डेवलपर के लिए कहा।
लेकिन पुस्तकालय डेवलपर डिफ़ॉल्ट कार्यान्वयन को जोड़ने के लिए करते हुए कहा कि यह जावा सर्वोत्तम प्रथाओं का उल्लंघन होगा और इंटरफ़ेस तरीकों में डिफ़ॉल्ट कार्यान्वयन का उपयोग कर मना कर दिया इंटरफेस के प्रयोजन के खिलाफ जाते हैं।
लेकिन, जैसा कि मैं समझ सकता, इस इंटरफ़ेस में एक विधि कुछ कार्रवाई जो इस इंटरफ़ेस का एक implementer में सक्षम होना चाहिए निर्दिष्ट नहीं है। इस इंटरफेस में एक विधि बल्कि एक ऐसी घटना को परिभाषित करती है जिसमें एक कार्यान्वयनकर्ता दिलचस्पी ले सकता है। इसलिए मुझे डिफ़ॉल्ट कार्यान्वयन को जोड़ने के लिए स्पष्ट कारण नहीं दिख रहा है।
तो, यह इंटरफ़ेस करने के लिए डिफ़ॉल्ट कार्यान्वयन जोड़ रहा है जावा सर्वोत्तम प्रथाओं को तोड़ने?
आप कार्यान्वयन के साथ एक इंटरफ़ेस चाहते हैं? वह संकलन भी नहीं करेगा। जब तक मैं आपका प्रश्न समझ नहीं पा रहा हूं। – Manu
जावा 8 में, आप इंटरफेस विधियों के लिए एक डिफ़ॉल्ट कार्यान्वयन निर्दिष्ट कर सकते हैं, जिससे विधि को कार्यान्वित करने के लिए इंटरफेस के कार्यान्वयन के लिए इसे वैकल्पिक बनाया जा सके। –
उसे नहीं पता था। ऐसा लगता है कि यह सुविधा पिछली संगतता के लिए प्रदान की जाती है, जबकि आपको केवल इंटरफेस के बजाय एक अमूर्त वर्ग का उपयोग करना चाहिए। (आपको लाइब्रेरी लड़के की भी आवश्यकता नहीं है, बस इसे स्वयं बनाएं) – Manu