के साथ अपरिवर्तनीय मैप बनाने का मुद्दा मैं ImmutableMap
बनाने की कोशिश कर रहा हूं जो तारों को कक्षाओं में मैप करता है (नोट: यह निश्चित रूप से केवल एक उदाहरण है!)। हालांकि, जैसेकक्षा <?> कुंजी
ImmutableMap<Class<?>, String> map = ImmutableMap.of(
Integer.class, "Integer",
Date.class, "Date"
);
कुछ मुझे निम्न त्रुटि
Type mismatch: cannot convert from ImmutableMap<Class<? extends Object&Comparable<?>&Serializable>,String> to ImmutableMap<Class<?>,String>
अजीब तरह से पर्याप्त अगर मैं कुंजी के किसी भी (!) के लिए Class<?>
करने के लिए एक वर्णक जोड़ने के काम करता है, यानी
ImmutableMap<Class<?>, String> map = ImmutableMap.of(
Integer.class, "Integer",
Date.class, "Date",
(Class<?>) String.class, "String",
long.class, "Long"
);
देता है
ठीक काम करेगा। मैं इस व्यवहार से परेशान हूं: एक के लिए, यह बिना जानवरों के काम क्यों करता है? ये सभी कक्षाएं हैं और यह वास्तव में Class<?>
से अधिक सामान्य नहीं है, तो यह क्यों काम नहीं करता है? दूसरा, चाबियों में से किसी एक पर कास्ट क्यों काम करता है?
(ओर ध्यान दें: अगर आप सोच रहे हैं क्यों मैं भी ऐसा करना चाहते हैं - हाँ, यह प्रतिबिंब की वजह से है ...)
संपादित करें: मैं वास्तव में सिर्फ पता लगा है कि इस काम करेंगे, लेकिन मैं stil ऊपर व्यवहार
ImmutableMap<Class<?>, String> map = ImmutableMap.<Class<?>, String>builder()
.put(Integer.class, "Integer")
.put(Date.class, "Date")
.build();
बहुत बढ़िया। धन्यवाद! –
@ IngoBürk आपका स्वागत है :) –