मैं एक हैश मैप बनाने के लिए एक तरीका ढूंढ रहा हूं जो मिश्रित प्रकारों के लिए मानचित्र बनाता है।जावा मैपिंग मिश्रित प्रकार
उदाहरण के लिए, निम्नलिखित पायथन में काम करते हैं (ध्यान दें कि एक अजगर dict
एक जावा HashMap
के समान है) होगा:
d = dict()
d["str"] = "This is a string"
d["flt"] = 1.23
d["int"] = 5
और जब d[x]
एक्सेस करते समय, उचित प्रकार लौटा दिया जाएगा (स्ट्रिंग, नाव, इस उदाहरण में int)।
जावा में, मैं HashMap<String, Object>
के साथ जा सकता हूं, लेकिन मेरे पास वास्तव में यह बताने का कोई तरीका नहीं है कि प्रत्येक ऑब्जेक्ट किस प्रकार है।
तो इसके बजाय, मैं वर्तमान में ऐसा करने की कोशिश कर रहा हूं MixedType
कक्षा है जिसमें ऑब्जेक्ट है, लेकिन इसकी मूल प्रकार की जानकारी भी है, ताकि मैं इसे बाद में घटा सकूं। उदाहरण के लिए:
public class MixedMap
public static class MixedType
{
public Class<?> cls;
public Object val;
public MixedType(Class<?> c, Object v)
{
this.cls = c;
this.val = v;
}
}
public static void main(String args[])
{
MixedType m1 = new MixedType(String.class, "This is a String");
System.out.println((m1.cls)m1.val);
}
}
नोट इस मैं :-) करने के लिए के रूप में यह वर्तमान में शिकायत की कि m1 cannot be resolved to a type
संकलन नहीं कर रहा है कोशिश कर क्या कर रहा हूँ है।
तो मेरा सवाल यह है कि, मैं इसे कैसे ठीक कर सकता हूं? एक ही लक्ष्य को प्राप्त करने के अन्य तरीकों का स्वागत किया जाएगा, लेकिन कृपया मुझे यह बताने का जवाब न दें कि यह संकलक की प्रकार की जांच क्षमता को सीमित करता है - मुझे पता है और इसके साथ ठीक है।
अग्रिम धन्यवाद।
क्या मैं अभी पूछ सकता हूं: एक बार पुनर्प्राप्त किए जाने के बाद आप वस्तुओं के साथ क्या करेंगे? मुझे लगता है कि आम तौर पर इसे कास्ट करने से बचने के लिए इसे डिजाइन करने का एक बेहतर तरीका है। –
भले ही आपके पास अपने सादे 'ऑब्जेक्ट्स' में संग्रहीत प्रकार की जानकारी हो, फिर भी आप यह जानने की उम्मीद कैसे करते हैं कि उन्हें डालने के बाद क्या करना है? –
निश्चित रूप से, मैं हैश मैप का उपयोग "कॉन्फ़िगरेशन" प्रकार ऑब्जेक्ट के रूप में करूँगा, जहां उपयोगकर्ता कुछ कॉन्फ़िगरेशन सेटिंग्स निर्दिष्ट करेगा जिन्हें पार्स किया जाएगा और इस मानचित्र में रखा जाएगा। कार्यक्रम में कुछ बिंदुओं पर मैं यह देखने के लिए जांच करूंगा कि कोई निश्चित कॉन्फ़िगरेशन विकल्प सेट है या नहीं, यदि इसका उपयोग करें और डिफ़ॉल्ट का उपयोग न करें। मिश्रित प्रकारों की आवश्यकता का कारण यह है कि कुछ कॉन्फ़िगरेशन विकल्प स्ट्रिंग होंगे, अन्य फ्लोट्स, अन्य इन्ट्स इत्यादि। – jedwards