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
Post a Comment