जावा कलेक्शंस फ्रेमवर्क के माध्यम से, मैंने देखा है कि कुछ इंटरफेस में टिप्पणी है (optional operation)
। इन विधियों के माध्यम से कक्षाओं को लागू करने की अनुमति देता है UnsupportedOperationException
यदि वे सिर्फ उस पद्धति को लागू नहीं करना चाहते हैं।
इसका एक उदाहरण addAll
विधि है Set Interface
।
अब, जैसा कि सवालों की इस श्रृंखला में कहा गया है, इंटरफेस इस बात के लिए एक परिभाषित अनुबंध है कि उपयोग क्या उम्मीद कर सकता है।
इंटरफेस महत्वपूर्ण हैं क्योंकि वे अलग करते हैं कि कोई वर्ग यह कैसे करता है। एक ग्राहक क्या उम्मीद कर सकता है यह अनुबंध को परिभाषित करता है कि डेवलपर किसी भी तरह से इसे लागू करने के लिए स्वतंत्र छोड़ सकता है, जब तक वे अनुबंध को बनाए रखते हैं।
तथा
एक इंटरफ़ेस उन क्रियाओं का वर्णन है जो एक वस्तु कर सकती है ... उदाहरण के लिए जब आप एक प्रकाश स्विच को फ्लिप करते हैं, तो प्रकाश चलता है, आप परवाह नहीं करते कि कैसे, बस यही करता है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, एक इंटरफ़ेस सभी कार्यों का वर्णन है जो एक ऑब्जेक्ट को "एक्स" होने के लिए होना चाहिए।
तथा
मुझे लगता है कि इंटरफ़ेस-आधारित दृष्टिकोण काफी अच्छा है। फिर आप अपनी निर्भरता का अच्छी तरह से मजाक उड़ा सकते हैं, और सब कुछ मूल रूप से कम कसकर युग्मित है।
इंटरफ़ेस + एक्सटेंशन (मिक्सिन) बनाम बेस क्लास
यह देखते हुए कि इंटरफेस का उद्देश्य एक अनुबंध को परिभाषित करना और अपनी निर्भरता को शिथिल करना है, कुछ तरीकों UnsupportedOperationException
से उद्देश्य को हराने का एक तरीका नहीं है? इसका मतलब है कि मैं अब पारित नहीं किया जा सकता है Set
और सिर्फ उपयोग कर सकता हूं addAll
। बल्कि, मुझे यह जानना होगा कि Set
मैं किस कार्यान्वयन को पारित किया गया था, इसलिए मुझे पता चल सकता है कि मैं उपयोग कर सकता हूं addAll
या नहीं। यह मुझे बहुत बेकार लगता है।
तो देर किस बात की UnsupportedOperationException
? क्या यह सिर्फ विरासत कोड के लिए बना रहा है, और उन्हें अपने इंटरफेस को साफ करने की आवश्यकता है? या यह एक अधिक सनसनीखेज उद्देश्य है जो मुझे याद आ रहा है?
src.zip
तब तक बढ़िया काम करता है। यह जानने में मदद करता है कि जेआरई कभी-कभी किस कोड को चला रहा है और JavaDoc को स्थगित नहीं करता है जो कि थोड़ा वर्बोज़ हो सकता है।
addAll
में परिभाषित नहीं हैHashSet
। यह डिफॉल्ट कार्यान्वयन पर निर्भरAbstractCollection
करता है जिसमें सबसे निश्चित रूप से फेंक नहीं हैUnsupportedOperationException
।