दिलचस्प पोस्ट
बटन पर क्लिक करने के बाद एक चेतावनी को खोलने के लिए कैसे निकाल दिया जाता है? ईसी 2 उदाहरण के लिए कुंजी युग्म बदलें कश्मीर के निकटतम पड़ोसी और इसके कार्यान्वयन ढूँढना लिस्प निष्पादनीय उस विशेषता के नाम से संबंधित स्ट्रिंग को दिए गए वस्तु विशेषता को कैसे एक्सेस किया जाए Node.js – यूटीसी में डेट स्ट्रिंग फ़ॉर्मेट कैसे करें मैं foreach लूप में दोहराए जाने वाले तत्वों को कैसे विभाजित कर सकता हूं I एक आईफ्रेम quirks मोड में प्रस्तुत करना होगा? क्रोम एक्सटेंशन: कैसे पृष्ठ इनपुट के 'keydown' घटना भेजने के लिए? जावास्क्रिप्ट: अल्फ़ान्यूमेरिक स्ट्रिंग की प्राकृतिक प्रकार की क्या आप स्थिर क्षेत्रों के साथ @ एक्टोवर्थ का उपयोग कर सकते हैं? मौजूदा कॉलम के लिए एक डिफ़ॉल्ट मान कैसे सेट करें Asp.net-mvc में कैशिंग IIS में एक जावा वेब अनुप्रयोग चला रहा है वरीयता स्क्रीन पर एक बटन कैसे जोड़ें

java: (स्ट्रिंग ) 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(); 

यह तब भी होता है जब v2 वस्तु [0] और जब भी इसमें स्ट्रिंग होते हैं कोई विचार क्यों?

Solutions Collecting From Web of "java: (स्ट्रिंग ) List.toArray () ClassCastException प्रदान करता है"

इसका कारण यह है कि जब आप उपयोग करते हैं

  toArray() 

यह एक वस्तु [] देता है, जिसे स्ट्रिंग [] के लिए नहीं डाला जा सकता है (यहां तक ​​कि सामग्री स्ट्रिंग्स भी हैं) यह इसलिए है क्योंकि toArray विधि केवल एक हो जाता है

 List 

और नहीं

 List<String> 

जेनरिक्स केवल एक स्रोत कोड हैं, और रनटाइम पर उपलब्ध नहीं हैं और इसलिए यह निर्धारित नहीं कर सकता कि किस प्रकार के सरणी को बनाने के लिए।

उपयोग

 toArray(new String[v2.size()]); 

जो सही प्रकार की सरणी को आवंटित करता है (स्ट्रिंग [] और सही आकार का)

आप गलत करने के लिए toArray() का उपयोग कर रहे हैं

याद रखें कि जावा की जेनेरिक ज्यादातर वाक्यविन्यास चीनी हैं एक ArrayList वास्तव में नहीं जानता है कि उसके सभी तत्व स्ट्रिंग हैं

अपनी समस्या को ठीक करने के लिए, toArray(T[]) कॉल करें। आपके मामले में,

 String[] v3 = v2.toArray(new String[v2.size()]); 

ध्यान दें कि सामान्यीकृत फॉर्म toArray(T[]) T[] , इसलिए परिणाम को स्पष्ट रूप से डाली जाने की आवश्यकता नहीं है।