Java Generics and Raw Types -


मेरे पास अगला कोड है:

  ArrayList मान = नया ArrayList & lt; Integer & gt; (); // 1 value.add ("टेस्ट"); // 2  

मैं 2 लाइन समझने की कोशिश कर रहा हूँ। हालांकि मुझे लगता है कि value.add ("test") देख सकते हैं; त्रुटियों के बिना संकलित, मैं कर सकता हूँ यह देखने का कारण नहीं है कि यह एक रनटाइम अपवाद फेंकता नहीं है यदि मान एक सामान्य ArrayList ऑब्जेक्ट को संदर्भित कर रहा है, तो क्यों जावा इसे स्ट्रिंग जोड़ने की अनुमति देता है? क्या कोई मुझे इसकी व्याख्या कर सकता है?

मुझे इसके बारे में सबसे करीब की व्याख्या मिली है, लेकिन मुझे मुख्य कारण समझ में नहीं आता है:

  स्टैक s = नया स्टैक & lt; Integer & gt; ()  

यह एक पैरामीलेटेड प्रकार से एक कच्चा प्रकार के लिए एक कानूनी रूपांतरण है। आप किसी भी प्रकार के मूल्य को पुश करने में सक्षम होंगे। हालांकि, किसी भी ऐसे ऑपरेशन के परिणामस्वरूप "अनियंत्रित कॉल" चेतावनी पड़ेगी।

सामान्य प्रकार रहे । तो रनटाइम पर, एक ArrayList एक कच्चा ArrayList है, चाहे आप इसे सामान्य या नहीं के रूप में परिभाषित करते हैं।

आपके मामले में, कोड संकलित करता है जैसा आपकी ArrayList घोषणा सामान्य नहीं है, और यह प्रकार के विलोपन के कारण ठीक चलता है।


Comments

Popular posts from this blog

apache - 504 Gateway Time-out The server didn't respond in time. How to fix it? -

c# - .net WebSocket: CloseOutputAsync vs CloseAsync -

c++ - How to properly scale qgroupbox title with stylesheet for high resolution display? -