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