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

Popular posts from this blog

c - Mpirun hangs when mpi send and recieve is put in a loop -

python - Apply coupon to a customer's subscription based on non-stripe related actions on the site -

java - Unable to get JDBC connection in Spring application to MySQL -