Propertiesलागू Map<Object, Object>- नहीं Map<String, String>।
आप इस निर्माता को कॉल करने का प्रयास कर रहे हैं:
public HashMap(Map<? extends K,? extends V> m)
... के साथ Kऔर Vदोनों के रूप में String।
लेकिन Map<Object, Object>यह नहीं है Map<? extends String, ? extends String>... इसमें गैर-स्ट्रिंग कुंजी और मान हो सकते हैं।
यह काम करेगा:
Map<Object, Object> map = new HashMap<Object, Object>();
... लेकिन यह आपके लिए उतना उपयोगी नहीं होगा।
मूल रूप से, Propertiesकभी भी उपवर्ग नहीं बनाया जाना चाहिए HashTable... यही समस्या है। V1 के बाद से, यह हमेशा गैर-स्ट्रिंग कुंजी और मूल्यों को संग्रहीत करने में सक्षम रहा है, इसके बावजूद कि इरादा के खिलाफ है। यदि इसके बजाय संरचना का उपयोग किया गया था, तो एपीआई केवल स्ट्रिंग कुंजी / मूल्यों के साथ काम कर सकता था , और सभी अच्छी तरह से होंगे।
आप कुछ इस तरह चाहते हैं:
Map<String, String> map = new HashMap<String, String>();
for (String key : properties.stringPropertyNames()) {
map.put(key, properties.getProperty(key));
}
Hashtable<Object, Object>, यहां तक कि ऐसी चीजें जो स्ट्रिंग्स नहीं हैं - यहां तक कि चाबियाँ जो स्ट्रिंग्स नहीं हैं।