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 มันสามารถจัดเก็บคีย์และค่าที่ไม่ใช่สตริงได้เสมอแม้ว่าจะขัดต่อเจตนาก็ตาม หากมีการใช้การจัดองค์ประกอบแทน API สามารถใช้ได้เฉพาะกับคีย์ / ค่าสตริงเท่านั้นและทั้งหมดจะเป็นไปด้วยดี
คุณอาจต้องการสิ่งนี้:
Map<String, String> map = new HashMap<String, String>();
for (String key : properties.stringPropertyNames()) {
map.put(key, properties.getProperty(key));
}
Hashtable<Object, Object>แม้แต่สิ่งที่ไม่ใช่สตริง - แม้แต่คีย์ที่ไม่ใช่สตริง