2011-08-21 16 views
13

संभावित डुप्लिकेट:
marker interface
What is the purpose of a marker interface?मार्कर इंटरफ़ेस का उद्देश्य क्या है?

मैं जानता हूँ कि मार्कर इंटरफेस है क्या - कोई तरीकों के साथ एक इंटरफेस। उदाहरण: सीरियलज़ेबल, रिमोट, क्लोनेबल।

मुझे आश्चर्य है कि मार्कर इंटीफेस का उद्देश्य क्या है। यह मेरी समझ है: -

असल में यह सामान्य वस्तुओं से विशेष वस्तुओं की पहचान करना है। सीरियलाइजेशन के मामले में, जिन वस्तुओं को क्रमबद्ध करने की आवश्यकता है, उन्हें सीरियलाइज़ेबल इंटरफ़ेस को कार्यान्वित करना चाहिए और रेखा लिखने के लिए ऑब्जेक्ट() विधि को कहीं भी जांचना चाहिए यदि यह धारावाहिक या नहीं है। जहां तक ​​मुझे लगता है, एकमात्र उद्देश्य है जिसके लिए इंटरफ़ेस serializable (मार्कर इंटरफेस) का उपयोग कर लिखते हैं। सही? या jvm serializable इंटरफ़ेस के आधार पर भी कुछ अतिरिक्त कार्यक्षमता प्रदान करता है?

क्लोनेबल इंटरफ़ेस के लिए इसी प्रकार का तर्क सत्य है।

अब देखते हैं कि यह कैसे उपयोगी है।

आइए एप्लिकेशन में कहें कि हमारे पास 1000 मूल्य वस्तुएं हैं। हम केवल 100 विशिष्ट वस्तुओं को क्रमबद्ध करना चाहते हैं। अब जेडीके ने कहा है कि प्रोग्रामर भूमिका इस मामले में मार्कर इंटरफ़ेस के साथ ऑब्जेक्ट को विशेष रूप से चिह्नित करने के लिए है, इसके क्रमिक इंटरफ़ेस.अब जेडीके उस वस्तु का ख्याल रखेगा जो क्रमबद्ध करने के लिए है या नहीं?

हां हम इस तरह के व्यवहार को किसी प्रकार के बोलेन ध्वज के साथ प्राप्त कर सकते हैं। लेकिन एक खराब दृष्टिकोण होगा।

इसी प्रकार हम उपयोगकर्ता परिभाषित मार्कर इंटरफ़ेस के मामले में कह सकते हैं, हम विशेष ऑब्जेक्ट्स को मार्कर इंटरफ़ेस की सहायता से अलग कर सकते हैं। जैसे हम ऑपरेटर के उदाहरण का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि यह उस विशेष इंटरफ़ेस का उदाहरण है या नहीं। यदि हां कुछ अपवाद फेंकने के मामले में आगे बढ़ें।

कृपया उपर्युक्त समझ सही है या नहीं?

+0

डुप्लिकेट हैं। मुझे उन्हें – Bozho

उत्तर

14

आपकी समझ सही है। मार्कर इंटरफ़ेस भी एक प्रकार को परिभाषित करता है। इस प्रकार विधि हस्ताक्षर में इसका उपयोग किया जा सकता है। उदाहरण के लिए, हाइबरनेट का Session.get() method तर्क के रूप में एक Serializable लेता है। यह प्राथमिक कुंजी को पार करने से बचाता है जो तर्क के रूप में क्रमिक नहीं होगा।

ध्यान दें कि क्लोनेबल, खराब प्रदर्शन विकल्प के रूप में देखा गया है।

सीरियलाइज़ेबल को निश्चित रूप से एक एनोटेशन के साथ कार्यान्वित किया जा सकता है यदि सीरियलाइजेशन लागू होने पर मौजूद थे।

मार्कर इंटरफेस, अधिकांश समय, एक विरोधी पैटर्न हैं। एक इंटरफेस को एक बहुलक व्यवहार को परिभाषित करना चाहिए। एक मार्कर इंटरफ़ेस को एनोटेशन द्वारा प्रतिस्थापित किया जा सकता है।

+0

ढूंढने दें, इस लिंक ने भी एक ही चीज़ का प्रदर्शन किया http://javarevisited.blogspot.in/2012/01/what-is-marker-interfaces-in-java-and.html –

संबंधित मुद्दे