Propertiesuygular Map<Object, Object>- değil Map<String, String>.
Bu kurucuyu aramaya çalışıyorsunuz:
public HashMap(Map<? extends K,? extends V> m)
... ile Kve Vher ikisi ile String.
Ama Map<Object, Object>bir Map<? extends String, ? extends String>... dize olmayan anahtarlar ve değerler içerebilir.
Bu işe yarar:
Map<Object, Object> map = new HashMap<Object, Object>();
... ama senin için o kadar yararlı olmayacak.
Temelde, Propertiesasla bir alt sınıf yapılmamalıydı HashTable... sorun bu. V1'den beri, amaca aykırı olmasına rağmen, String olmayan anahtarları ve değerleri her zaman depolayabiliyor. Bunun yerine kompozisyon kullanılmış olsaydı, API yalnızca dize anahtarları / değerleriyle çalışabilirdi ve her şey yolunda olurdu.
Bunun gibi bir şey isteyebilirsiniz:
Map<String, String> map = new HashMap<String, String>();
for (String key : properties.stringPropertyNames()) {
map.put(key, properties.getProperty(key));
}
Hashtable<Object, Object>Dizge olmayan şeyler de dahil olmak üzere istediğiniz her şeyi besleyebilirsiniz - dizge olmayan anahtarlar bile .