यह
List<Animal> list = new ArrayList<Dog>();
Parameterized प्रकार की तरह समान त्रुटि दोनों अंत में एक ही प्रकार के होना चाहिए। कोई विरासत (आईएस-ए) अवधारणा नहीं है। यदि आप अभी भी इसका उपयोग करना चाहते हैं तो विस्तृत/सुपर कीवर्ड के साथ वाइल्डकार्ड (?) का उपयोग करें, जो बराबर चिह्न के बाईं ओर केवल अनुमति है।
List<Animal> list = new ArrayList<Dog>(); // is not allowed
लेकिन
Animal[] animal = new Dog[10]; //is allowed
animal[0] = new Dog(); // is allowed
है जिसे बाद में असफल हो जायेगी और फेंक अपवाद यदि किसी Cat
जोड़ने की कोशिश (फैली पशु) वस्तु।
animal[1] = new Cat(); //compiles fine but throws java.lang.ArrayStoreException at Runtime.
याद रखें animal[1]
या animal[index]
कुत्ते की reference
पहना हुआ है। तो Dog
संदर्भ चर Dog
ऑब्जेक्ट Cat
ऑब्जेक्ट नहीं देख सकता है।
तो इस तरह के परिदृश्य से बचने के लिए, जेएसएल ने जेनेरिक सूची/संग्रह में ऐसे बदलाव किए हैं। यह उत्तर आपके प्रश्न (Map
) के लिए भी लागू है।
पैरामीटर प्रकार दोनों अंत में एक ही प्रकार का होना चाहिए।
List<Animal> list = new ArrayList<Animal>();
आप 'मानचित्र <इंटीजर,' का उपयोग भी कर सकते हैं? नक्शा <स्ट्रिंग, इंटीजर >> myMap = नया हैश मैप <इंटीजर, हैश मैप <स्ट्रिंग, इंटीजर >>(); ' – Keppil
@ रीमेमस कुछ और स्पष्टीकरण मेरे लिए सहायक होगा .. –