निम्नलिखित कोड (एंड्रॉयड में चलाने) मुझे हमेशा 3 पंक्ति में एक ClassCastException देता है देता है:जावा: (String []) List.toArray() ClassCastException
final String[] v1 = i18nCategory.translation.get(id);
final ArrayList<String> v2 = new ArrayList<String>(Arrays.asList(v1));
String[] v3 = (String[])v2.toArray();
यह भी होता है जब वी 2 वस्तु है [ 0] और जब इसमें स्ट्रिंग्स भी होते हैं। कोई विचार क्यों?
आप सहप्रसरण और contravariance के बारे में पढ़ सकते हैं - http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Java – Hut8
मामले के बारे में क्या जहां टी एक है तत्काल के लिए एक कारखाने विधि के साथ इंटरफ़ेस। – sebaj
@ लेसकार्ड - यह केवल अप्रत्यक्ष रूप से कॉन्वर्सिस/contravariance से संबंधित है। असली मुद्दा यह है कि यह 'toArray()' विधि के निर्दिष्ट व्यवहार का प्रत्यक्ष परिणाम है। –