"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ऐरे जावा में जेनेरिक आइटम क्यों नहीं रख सकते?

ऐरे जावा में जेनेरिक आइटम क्यों नहीं रख सकते?

2024-11-18 को प्रकाशित
ब्राउज़ करें:416

Why Can\'t Arrays Hold Generic Items in Java?

क्या ऐरे जेनेरिक आइटम रख सकते हैं?

जेनेरिक प्रकार और ऐरे जावा में अलग-अलग तरीके से इंटरैक्ट कर सकते हैं। निम्नलिखित कोड पर विचार करें:

ArrayList a = new ArrayList();

यह कोड सफलतापूर्वक संकलित होता है, जिससे a नामक एक सामान्य ArrayList बनता है। हालाँकि, निम्नलिखित कोड संकलित करने में विफल रहता है:

ArrayList[] a = new ArrayList[10];

ऐसा क्यों है? ऐसा प्रतीत होता है कि सरणियाँ और जेनरिक असंगत हैं। इसे समझने के लिए, आइए जावा में टाइप इरेज़र का पता लगाएं। कच्चे प्रकार (वस्तु)। यह स्ट्रिंग को पूर्णांकों की ArrayList में रखने जैसी त्रुटियों को रोकता है। हालाँकि, सरणियों के लिए एक कच्चे प्रकार की आवश्यकता होती है, और जेनेरिक को कच्चे प्रकार के रूप में प्रस्तुत नहीं किया जा सकता है। सरणी को वांछित प्रकार में डालें:

ArrayList[] a = (ArrayList[]) new ArrayList[10];

यह कास्ट कंपाइलर को निर्देश देता है कि सरणी को मुख्य तत्वों के साथ ArrayLists की एक सरणी माना जाना चाहिए।

सूचियों की सूची: अपवाद

जावा में, सूचियों की एक सूची को एक सरणी नहीं माना जाता है . इसलिए, निम्नलिखित कोड टाइप कास्टिंग के बिना संकलित होता है:

ArrayList[] a = (ArrayList[]) new ArrayList[10];
यह अंतर उत्पन्न होता है क्योंकि ArrayList एक गैर-सरणी प्रकार है।

निष्कर्ष

सरणी और सामान्य प्रकारों की टाइप इरेज़र के कारण जावा में सीमाएँ हैं। हालाँकि, स्पष्ट रूप से वांछित सामान्य प्रकार में सरणियाँ कास्टिंग करके या सूचियों की सूचियों का उपयोग करके, कोई इन सीमाओं को नेविगेट कर सकता है और दोनों संदर्भों में सामान्य प्रकारों का प्रभावी ढंग से उपयोग कर सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3