यहाँ एक सवाल है, यह पहली कोड सूची ठीक संकलित (JDK 1.6 | JDK 1.7):का मेल कच्चे प्रकार और जेनेरिक तरीके
ArrayList<String> a = new ArrayList<String>();
String[] s = a.toArray(new String[0]);
हालांकि, अगर मैं एक कच्चे प्रकार के रूप में List
संदर्भ की घोषणा:
ArrayList a = new ArrayList();
String[] s = a.toArray(new String[0]);
मुझे एक संकलक त्रुटि मिलती है जो String[]
आवश्यक है लेकिन Object[]
पाया गया था।
इसका मतलब है कि मेरा संकलक Object[]
लौटने के रूप में जेनेरिक विधि को String[]
प्राप्त करने के बावजूद इसके तर्क के रूप में व्याख्या कर रहा है।
मैं दोगुनी जाँच toArray(myArray)
विधि हस्ताक्षर:
<T> T[] toArray(T[] a);
इसलिए यह एक पैरामिट्रीकृत विधि जिसका प्रकार पैरामीटर <T>
सूची के साथ कोई संबंध (अर्थात <E>
) है।
मुझे नहीं पता कि कच्चे प्रकार का उपयोग करने से स्वतंत्र प्रकार पैरामीटर का उपयोग करके पैरामीटरयुक्त विधियों के मूल्यांकन को प्रभावित किया जाता है।
- क्या किसी को पता है कि यह कोड संकलित क्यों नहीं करता है?
- क्या कोई इस संदर्भ को दस्तावेज करता है जहां कोई व्यवहार दस्तावेज है?
अगर आप '(String []) a.toArray() का उपयोग क्या; चूंकि आप जेनिक्स का उपयोग नहीं कर रहे हैं, इसलिए कास्टिंग एक जरूरी है। –
@HovercraftFullOfEels सुझाव के लिए धन्यवाद। मुझे पता है कि मैं इसे कास्ट कर सकता हूं, लेकिन मैं प्रोग्रामर प्रमाणीकरण के लिए अध्ययन कर रहा हूं और मुझे कुछ जेनेरिक कोड के साथ खेलने के दौरान बस इसके बारे में पता चला और मैं इसे समझा नहीं सकता। इससे पहले कभी ऐसा कुछ नहीं चला था। इसलिए, मैं यह क्यों समझ रहा हूं कि ऐसा क्यों होता है। –
दिलचस्प खोज। विचित्र रूप से पर्याप्त, यदि आप ऑब्जेक्ट (ArrayList