2010-07-16 7 views
6

संभव डुप्लिकेट:
Java Generics: Why Does Map.get() Ignore Type?जावा मानचित्र <K,V>: क्यों (वस्तु) प्राप्त नहीं (के)?

कोई समझाने कृपया सकते हैं क्यों मानचित्र के साथ परिभाषित करता है

V put(K key,V value); 
V get(Object key); 

है क्यों get के रूप में परिभाषित नहीं:

V get(K key) 

इसी प्रकार, इन विधियों को क्रमशः Object पर क्यों टाइप किया गया है, और K और V क्रमशः क्यों नहीं हैं?

boolean containsKey(Object key); // Why not K? 
boolean containsValue(Object value); // Why not V? 

क्या यह पिछली संगतता चीज़ (प्री 1.5) है?

+0

http://stackoverflow.com/questions/1455138/java-generics-why-does-map-get-ignore- के संभावित डुप्लिकेट- टाइप करें – tonio

+0

सहमत - धन्यवाद। डुप्लिकेट के रूप में ध्वजांकित करेंगे। –

उत्तर

0

टेम्पलेट्स लक्ष्य संकलन समय में नियंत्रण लागू करने के लिए है (यदि आप नहीं एक बिल्ली एक कुत्ता में डाल सकते हैं सूची), और स्पष्ट जानवरों को दबाकर प्रोग्रामर के कोड को सरल बनाने के लिए।

इस तरीके में, टेम्पलेट की कोई आवश्यकता नहीं है। यदि आप तुलना करते हैं (एक बिल्ली और कुत्ते के बराबर "के साथ), इसमें कोई घटना नहीं है। अधिक, differents कक्षाओं के दो objets "बराबर" हो सकता है! एक बहुत ही प्रतिबंधित विधि हस्ताक्षर मानचित्र के उपयोग को सीमित करेगा।

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

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