getClass() of a Generic Method Parameter in a Java -


निम्नलिखित जावा विधि को संकलित करने में विफल रहता है:

  & lt; T संख्या बढ़ाता है & gt; शून्य foo (टी टी) {क्लास & lt ;? T & gt; क्लास = टी.गेटक्लास (); }   

त्रुटि प्राप्त हुई है: प्रकार बेमेल: कक्षा & lt; कैप्चर # 3-से परिवर्तित नहीं किया जा सकता है? संख्या & gt; से कक्षा & lt ;? को बढ़ाता है टी & gt; बढ़ाता है

क्या कोई समझा सकता है क्यों class & lt ;? T & gt; विस्तारित है, लेकिन कक्षा & lt ;? संख्या बढ़ती है; ठीक है?

का कहना है:

वास्तविक परिणाम प्रकार वर्ग & lt ;? है एक्स | एक्स | & gt; जहां | X | यह अभिव्यक्ति के स्थिर प्रकार का विलोपन है जिस पर getclass कहा जाता है। उदाहरण के लिए, इस कोड के टुकड़े में कोई कलाकार की आवश्यकता नहीं है:

  संख्या n = 0; क्लास के लिए & lt ;? संख्या & gt; फैली C = n.getClass ();    

क्योंकि T वर्ग 'प्रकार का विस्तार नहीं होता है से T इसके बजाय, यह संख्या से फैली हुई है, ठीक उसी तरह जैसा कि आपने खुद को & lt; T में विस्तारित किया है & gt; इतना ही आसान।

एक बेहतर सवाल होगा:

निम्नलिखित संकलन क्यों नहीं करता?

  & lt; टी संख्या को बढ़ाता है & gt; शून्य foo (टी टी) {क्लास & lt; T & gt; Class1 = t.getClass (); }    

इसका जवाब यह है कि वस्तु # getClass () रिटर्न class के साथ असीबद्ध वाइल्डकार्ड ? क्योंकि वस्तु स्वयं को इसके सामान्य प्रकार के बारे में सीधे नहीं जानती है, जिसे एक मनमाना पद्धति में अपेक्षित किया गया है।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -