2008-11-04 9 views
6

के लिए डिफ़ॉल्ट प्रकार मैं आमतौर पर अपनी नक्शा घोषणाएं टाइप करता हूं लेकिन कुछ रखरखाव कर रहा था और बिना टाइप किए एक पाया। यह मुझे सोच गया (ओह नहीं!)। मानचित्र घोषणा का डिफ़ॉल्ट टाइपिंग क्या है। निम्नलिखित पर विचार करें:हैश मैप डिफ़ॉल्ट रूप से के और वी

Map map = new HashMap(); 
map.put("one", "1st"); 
map.put("two", new Integer(2)); 
map.put("three", "3rd"); 
for (Map.Entry entry : map.entrySet()){ 
    System.out.println(entry.getKey() + " -> " + entry.getValue()); 
} 

Map.Entry पर एक असंगत प्रकार के साथ इस त्रुटियों। इसलिए यदि मैं घोषणा करता हूं:

Map<Object,Object> map = new HashMap(); 

तो सभी अच्छी तरह से काम करते हैं। तो घोषणा में सेट डिफ़ॉल्ट प्रकार क्या है? या मैं कुछ और याद कर रहा हूँ?

उत्तर

4

प्रकार java.lang.Object है।

निर्माण के लिए Iterableका एक प्रकार लेता है और प्रणाली को बुलाती है अपने इटरेटर। चूंकि सेट जेनिक्स के साथ टाइप नहीं किया गया है, तो इटेटरेटर ऑब्जेक्ट प्रकार की वस्तुएं लौटाता है। इन्हें मानचित्र टाइप करने के लिए स्पष्ट रूप से डालने की आवश्यकता है। एंटर्री

Map map = new HashMap(); 
map.put("one", "1st"); 
map.put("two", new Integer(2)); 
map.put("three", "3rd"); 
for (Object o : map.entrySet()) { 
    Map.Entry entry = (Map.Entry) o; 
    System.out.println(entry.getKey() + " -> " + entry.getValue()); 
} 
8

कोई डिफ़ॉल्ट प्रकार नहीं है।

जावा जेनरिक में प्रकार केवल संकलन-समय की जांच के लिए हैं। वे रनटाइम पर मिटा दिए जाते हैं और अनिवार्य रूप से चले जाते हैं।

जेनेरिकों को एक स्थिर सहायक के रूप में सोचें) आपके कोड को बेहतर दस्तावेज़, और बी) प्रकार सुरक्षा के लिए कुछ सीमित संकलन-समय की जांच सक्षम करें।

1

HashMap वस्तुओं का संग्रह है, सी ++ कंटेनर सोचें। मानचित्र के प्रत्येक तत्व डेटा रखने के लिए एक "बाल्टी" है।
आप बाल्टी में विभिन्न प्रकार के डेटा डाल रहे हैं, हैशपैप को यह जानने की जरूरत है कि ये सभी समान डेटा प्रकार नहीं हैं। यदि हैशपैप में केवल एक ही प्रकार का डेटा रखा गया था, तो आपको एक चेतावनी मिलेगी लेकिन यह संकलित होगी।

संबंधित मुद्दे