Java Generic with bounded wildcards -
वर्ग घोषणाओं के बीच अंतर क्या है
सार्वजनिक सार वर्ग Super1 & lt; T Super1 & lt टी & gt; & gt; {...} और
सार्वजनिक अमूर्त वर्ग Super2 & lt; टी Super2 & lt; सुपर टी & gt; & gt; {...} पहली विधि का उपयोग करके, मैं उप वर्ग (जावा में Enum प्रकारों के समान) बनाने में सक्षम था सार्वजनिक वर्ग सब 1 Super1 & lt; Sub1 & gt; {...} लेकिन मैं जानना चाहता था कि यदि एक सुपर क्लास घोषणापत्र 2 की तरह संभव है, तो इसका कोई अर्थ है, लेकिन मैं इसे बनाने में सक्षम नहीं था उप वर्ग की तरह
सार्वजनिक वर्ग Sub2 Super2 & lt; Object & gt; {...} मैंने सोचा कि वस्तु को T के लिए सुपर प्रकार के रूप में इस्तेमाल किया जा सकता है ?? इसके अलावा एक अन्य रूप मैं सोच सकता हूँ सार्वजनिक अमूर्त वर्ग Super3 & lt; T ext3 Super3 & lt ;? T & gt; & gt; मैं जेनेरिक सीखने की कोशिश कर रहा हूं और किसी भी मदद की सराहना की जाती है।
< पी> उन प्रकार की घोषणा अक्सर तस्वीर में आती है जब आप आत्म-संदर्भित सामान्य प्रकार के साथ वंशानुक्रम के साथ काम कर रहे हैं यहां दिए गए कीवर्ड हैं - आत्म-अभिलेख , और वंशानुक्रम । हमें समझें यह एक उदाहरण के साथ मान लें कि हमारे पास एक वर्ग कार है जो तुलनात्मक & lt; कार & gt; , और कार - मर्सिडीज़ का उप-वर्ग लागू करता है: <पूर्व> वर्ग कार कारगर बनाने योग्य & lt; कार & gt; {...} क्लास मर्सिडीज कार {} विस्तारित करता है अब, आप मर्सिडीज की तुलना करना चाहते हैं, तो आप सोच सकते हैं कि हम एक < कोड> तुलनात्मक & lt; मर्सिडीज & gt; वहां, और आप करते हैं: वर्ग मर्सिडीज कार के सामान को बढ़ाता है Comparable & lt; मर्सिडीज & gt; {} .. और वहां जहां आपको एक त्रुटि मिलती है समस्या यह है कि, अब मर्सिडीज वर्ग दोनों तुलनात्मक & lt; कार & gt; और तुलनात्मक & lt; मर्सिडीज & gt; को लागू करता है, जिसे अनुमति नहीं है इस पर पढ़ें: -
अतः, आप उस तुलनात्मक & lt; मर्सिडीज & gt; वहां से अब आप मर्सिडीज वर्ग को कार्यान्वयन तुलनात्मक & lt; कार & gt; । के साथ छोड़ दिया है, फिर आप एक वर्ग बनाते हैं, जो इस तरह से स्वयं-संदर्भित प्रकार पैरामीटर का उपयोग करते हैं : <पूर्व> वर्ग गैरेज & lt; टी तुलनात्मक विस्तारित & lt; T & gt; & gt; {} और इसका एक उदाहरण बनाते समय, कार और मर्सिडीज दोनों के साथ, आप ऐसा करते हैं: गैरेज & LT; कार & gt; कार कॉम्प = नया गैरेज & lt; कार & gt; (); गैरेज & LT; मर्सिडीज & gt; मर्सिडीज कॉम्प = नए गैरेज & lt; मर्सिडीज & gt; (); क्या आप त्रुटि पा सकते हैं? हाँ, यह 2 घोषणा में है। मर्सिडीज प्रकार तर्क का उपयोग नहीं किया जा सकता, क्योंकि यह सीमा को संतुष्ट नहीं करता है T Comparable extended & lt; T & gt; जैसा कि मर्सिडीज लागू होता है तुलनात्मक & lt; कार & gt; तो अब क्या करें? यहां उस घोषणा का उपयोग आता है चलो अपनी कक्षा गैरेज को इस तरह से बदल दें: वर्ग गेराज & lt; T तुलनात्मक & lt; सुपर टी & gt; & gt; {} .. और फिर आपका 2 इंस्टालेशन सफलतापूर्वक पारित होगा, क्योंकि अब मर्सिडीज सीमा को संतुष्ट करता है।
Comments
Post a Comment