द्वारा सीमित मानों के साथ जावा मानचित्र क्या जावा में कोई नक्शा है जहां किसी मान का प्रकार पैरामीटर कुंजी के प्रकार पैरामीटर से जुड़ा हुआ है? क्या मैं लिखना चाहते हैं निम्नलिखित की तरह कुछ है:कुंजी के प्रकार पैरामीटर
public class Foo {
// This declaration won't compile - what should it be?
private static Map<Class<T>, T> defaultValues;
// These two methods are just fine
public static <T> void setDefaultValue(Class<T> clazz, T value) {
defaultValues.put(clazz, value);
}
public static <T> T getDefaultValue(Class<T> clazz) {
return defaultValues.get(clazz);
}
}
है कि, मैं एक कक्षा वस्तु के खिलाफ किसी भी डिफ़ॉल्ट मान स्टोर कर सकते हैं, बशर्ते कि मान का प्रकार कक्षा वस्तु से मेल खाता है। मुझे नहीं पता कि इसकी अनुमति क्यों नहीं दी जानी चाहिए क्योंकि मैं यह सुनिश्चित कर सकता हूं कि प्रकार सही होने पर मूल्यों को सेट/प्राप्त करते समय।
संपादित करें: उसके उत्तर के लिए क्लीटस के लिए धन्यवाद। मुझे वास्तव में मानचित्र पर टाइप पैरामीटर की आवश्यकता नहीं है क्योंकि मैं उन तरीकों में स्थिरता सुनिश्चित कर सकता हूं जो मूल्यों को प्राप्त/सेट करते हैं, भले ही इसका मतलब कुछ बदसूरत कास्टों का उपयोग करना है।
क्या होगा यदि मूल्य जेनेरिक था? उदाहरण के लिए, 'स्ट्रिंग' और 'int' को संग्रहीत करने के बजाय आपको 'PrettyPrinter' स्टोर करने की आवश्यकता है, जहां 'टी' मानचित्र में कुंजी के रूप में उपयोग किए जाने वाले प्रकार टोकन है? इस उद्देश्य के लिए –
Lucas
@ लुकास गुवा ['TypeToInstanceMap'] प्रदान करता है (https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/reflect/TypeToInstanceMap.html); ['ClassToInstanceMap'] के साथ (https://github.com/google/guava/wiki/NewCollectionTypesExplained#classtoinstancemap) जो ब्लोच के 'पसंदीदा' एपीआई को दोहराता है। – dimo414