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>, навіть речі, які не є рядками - навіть ключі, які не є рядками.