निष्कर्ष
बराबरी के कार्यान्वयन के चार मनमाने ढंग से चुने गए उदाहरणों को विच्छेदित करके (), हम क्या निष्कर्ष निकालते हैं?
सबसे पहले: समान कार्यान्वयन () में कार्यान्वयन में टाइप मैच के लिए चेक के प्रदर्शन के दो अलग-अलग तरीके हैं। एक वर्ग सुपर- और उप-वर्ग की वस्तुओं के बीच मिश्रित प्रकार की तुलना को इंस्टोफ ऑपरेटर के माध्यम से करने की अनुमति दे सकता है, या एक वर्ग getClass () परीक्षण के माध्यम से विभिन्न प्रकार की वस्तुओं को गैर-बराबर मान सकता है। ऊपर सचित्र उदाहरण है कि getClass () का उपयोग कर बराबर () का क्रियान्वयन आम तौर पर उन उदाहरणों से अधिक मजबूत होता है, जो उदाहरणों का उपयोग करते हैं।
केवल अंतिम कक्षाओं के लिए या यदि कम से कम विधि के बराबर () सुपरक्लास में अंतिम है तो इंफ़ॉफ़ टेस्ट सही है। उत्तरार्द्ध अनिवार्य रूप से यह दर्शाता है कि किसी भी उपवर्ग को सुपरक्लास की स्थिति का विस्तार नहीं करना चाहिए, लेकिन केवल कार्यक्षमता या फ़ील्ड जोड़ सकते हैं जो ऑब्जेक्ट के राज्य और व्यवहार के लिए अप्रासंगिक हैं, जैसे क्षणिक या स्थिर क्षेत्र।
दूसरी ओर getClass () परीक्षण का उपयोग करने वाले कार्यान्वयन हमेशा बराबरी () अनुबंध का अनुपालन करते हैं; वे सही और मजबूत हैं। वे, हालांकि, शब्दार्थ से अलग हैं जो कि इंस्टोफ़ टेस्ट का उपयोग करते हैं। GetClass () का उपयोग करने वाले कार्यान्वयन उप-सुपरक्लास ऑब्जेक्ट्स के साथ उप-तुलना की अनुमति नहीं देते हैं, तब भी नहीं जब उप-वर्ग किसी भी फ़ील्ड को नहीं जोड़ता है और समतुल्य को ओवरराइड नहीं करना चाहेगा ()। उदाहरण के लिए "तुच्छ" वर्ग का विस्तार उदाहरण के लिए, इस "तुच्छ" उद्देश्य के लिए परिभाषित उपवर्ग में एक डिबग-प्रिंट पद्धति का जोड़ होगा। यदि सुपरक्लास गेटक्लास () जांच के माध्यम से मिश्रित-प्रकार की तुलना को प्रतिबंधित करता है, तो तुच्छ विस्तार इसके सुपरक्लास के लिए तुलनीय नहीं होगा। यह एक समस्या है या नहीं यह पूरी तरह से वर्ग के शब्दार्थ और विस्तार के उद्देश्य पर निर्भर करता है।
x instanceof SomeClass
अगरx
है तो अभिव्यक्ति झूठी हैnull
। इसलिए, दूसरे सिंटेक्स डोंस को अशक्त जांच की आवश्यकता नहीं है।