ग्रहण का कहना है कि जेनेरिक प्रकार इरेज़र के कारण टाइप पैरामीटर के साथ उदाहरण के ऑपरेशन की अनुमति नहीं है।टी "उदाहरण के टी" की अनुमति क्यों नहीं है जहां टी एक प्रकार पैरामीटर है और टी एक चर है?
मैं मानता हूँ कि रनटाइम पर, कोई प्रकार की जानकारी रहती है। लेकिन कक्षा की निम्नलिखित सामान्य घोषणा पर विचार करें:
class SomeClass<T>{
T t;
SomeClass(Object o){
System.out.println(o instanceof T); // Illegal
}
}
रनटाइम पर, कोई टी मौजूद नहीं होगा! लेकिन अगर मैं इस प्रकार के इंटीजर को चालू करता हूं, तो संबंधित ऑब्जेक्ट में फ़ील्ड टी प्रकार इंटीजर होगा।
फिर, कारण है कि मैं टी के साथ एक चर जो रनटाइम पर पूर्णांक द्वारा बदला जा सकता है के प्रकार की जाँच नहीं कर सकते। और मैं वास्तव में कुछ ऐसा करूँगा जैसे "ओ इंस्टेंसफ इंटेगर"।
इसके तहत मामलों, एक प्रकार पैरामीटर मुसीबत पैदा कर सकता है के साथ instanceof की इजाजत दी, ताकि वह निषिद्ध है?
जैसी कोई चीज़ नहीं होगी आप पहले ही कह चुके हैं "रनटाइम पर, कोई टी मौजूद नहीं होगा", तो ऐसा लगता है कि आप पहले से ही * टाइप एरर * के बारे में जानते हैं। तो मुझे यकीन नहीं है कि आप इस व्यवहार के बारे में उलझन में क्यों हैं? –
सिर्फ इसलिए कि इसकी अनुमति नहीं है इसका मतलब यह है कि यह रूबल का कारण बन सकता है। टी एक सामान्य प्रकार है और वास्तव में कुछ भी हो सकता है, इसका उपयोग करके इसका मतलब केवल किसी भी तरह की समझ में आता है। – Peter
[जावा: इंस्टेंसॉफ़ और जेनेरिक] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1570073/java-instanceof-and-generics) – millimoose