मुझे लगता है कि के कारण instanceof
और class literals
parameterized generic types
unbounded wild card types
को छोड़कर parameterized generic types
के लिए अनुमति नहीं है। जावा भाषा डिजाइनरों ने इस अपवाद की अनुमति क्यों दी? असंबद्ध जंगली कार्ड प्रकारों के लिए प्रकार की मिटाने की कोई भूमिका नहीं है?उदाहरण के ऑपरेटर को एक असंबद्ध वाइल्ड कार्ड प्रकार पर क्यों अनुमति दी जाती है लेकिन जावा में अन्य पैरामीटर प्रकारों पर नहीं?
5
A
उत्तर
7
बिंदु यह है कि एक वस्तु अपनी ठोस कक्षा को जानता है - लेकिन इसके लिए सामान्य प्रकार के तर्क नहीं। इसलिए यदि हम ArrayList<Integer>
बनाते हैं, तो निष्पादन समय पर यह पता चलता है कि यह कुछ प्रकार है - लेकिन यह Integer
भाग के बारे में नहीं जानता है।
if (foo instanceof ArrayList<?>)
मान्य है:
"किसी तरह का ArrayList
" भाग ठीक क्या ArrayList<?>
साधन जिसके कारण है। यह सिर्फ कच्चे प्रकार का उपयोग करने के लिए बराबर है:
if (foo instanceof ArrayList)
संबंधित मुद्दे
- 1. स्कैला सहायक कन्स्ट्रक्टर में पैरामीटर की अनुमति क्यों नहीं दी जाती है?
- 2. नए ऑपरेटर को वापस लौटने की अनुमति क्यों दी जाती है * प्रत्येक पॉइंटर-प्रकार के लिए शून्य?
- 3. प्रकार अनुमान वापसी प्रकार, वाइल्ड कार्ड, और चौराहे प्रकार
- 4. जावा में contravariant पैरामीटर प्रकार ओवरराइडिंग के लिए अनुमति क्यों नहीं है?
- 5. Jquery वाइल्ड कार्ड कैरेक्टर
- 6. java.util.ArrayList में आदिम डेटाटाइप को अनुमति क्यों नहीं दी जाती है?
- 7. टी "उदाहरण के टी" की अनुमति क्यों नहीं है जहां टी एक प्रकार पैरामीटर है और टी एक चर है?
- 8. जावा जेनेरिक प्रकार पैरामीटर रनटाइम पर क्यों संशोधित नहीं हैं?
- 9. अंतिम जावा कक्षाओं में संरक्षित सदस्यों को क्यों अनुमति दी जाती है?
- 10. इनपुट टैग को सीधे फ़ॉर्म टैग में क्यों अनुमति नहीं दी जाती है?
- 11. उपयोगकर्ता द्वारा परिभाषित तालिका प्रकारों पर EXECUTE अनुमति अस्वीकार कर दी गई है?
- 12. जब निरस्त() को निकास() पर प्राथमिकता दी जाती है?
- 13. .net DirectoryInfo बहिष्कार को संभालने के लिए वाइल्ड कार्ड पैटर्न
- 14. रनटाइम पर फॉर्मस्टाइल को बदलने की सलाह क्यों नहीं दी जाती है?
- 15. रनटाइम पर जावा में सभी प्रकार की जानकारी मिटाई क्यों नहीं जाती है?
- 16. पहचानकर्ता में # अनुमति क्यों नहीं है?
- 17. अनुमति केवल, सिस्टम एप्लिकेशन को दी जाती है प्रकट
- 18. सरणी प्रारंभकर्ताओं को केवल सरणी के लिए अनुमति क्यों दी जाती है?
- 19. विस्तार विधियों को केवल गैर-नेस्टेड, गैर-सामान्य स्थैतिक वर्ग में क्यों अनुमति दी जाती है?
- 20. अनुमति नहीं दी - php को अनलिंक
- 21. क्यों एमएफसी कंटेनरों पर एसटीएल कंटेनरों को प्राथमिकता दी जाती है?
- 22. सीएसएस में askerisk (*) वाइल्ड कार्ड के लिए ब्राउज़र समर्थन?
- 23. मॉडिफायरों को पैकेज के लिए अनुमति क्यों दी जाती है जब वे कुछ भी नहीं करते हैं?
- 24. PHP में इंस्टेंस चर को ओवरराइड करना क्यों संभव है लेकिन जावा में नहीं?
- 25. किसी विधि के एक हिस्से में डेटारो को मान्यता क्यों दी जाती है लेकिन कोई अन्य नहीं (मैं डेटारोज़ को गतिशील रूप से कैसे जोड़ सकता हूं)?
- 26. पैरामीटर लौटने पर आरवीओ क्यों अस्वीकृत है?
- 27. सी # में बेस क्लास को बिना किसी विरासत के इंटरफ़ेस अनुबंध को लागू करने की अनुमति क्यों दी जाती है?
- 28. हास्केल में उदाहरण घोषणाओं में एक प्रकार का हस्ताक्षर क्यों नहीं लगाया जा सकता है?
- 29. संख्या के आधार पर क्रेडिट कार्ड का प्रकार निर्धारित करें?
- 30. jQuery क्लिक पर कक्षा जोड़ें लेकिन केवल एक बार अनुमति दी गई है।
लेकिन वहाँ मेटा डेटा संकलक कहने के लिए कि 'क्षेत्र foo'' ArrayList 'रन टाइम पर इस प्रकार का है ना? मैं [केवल आपका जवाब] का जिक्र कर रहा हूं (http://stackoverflow.com/a/339708/1527084) –
Geek
@ गीक: हाँ, लेकिन यह * फ़ील्ड * के लिए है, न कि * ऑब्जेक्ट *। वे अलग हैं। –
कच्चे प्रकार 'ArrayList' का उपयोग करने के समान' ArrayList > 'के विरुद्ध क्यों जांच कर रहा है? –