Так проблема связана в логике групповых символов. Подстановочный знак означает, что параметр типа значения может быть любым, поэтому HashMap<String, ?>
действителен, но здесь вы не можете вставить в него значение String.
Примечание:HashMap<String, ?>
такой же, как HashMap<String, ? extends Object>
так ?
может быть любого типа класса, но Строка не может быть любого типа класса. Это является причиной вашей ошибки.
Вам нужно сделать небольшие изменения:
HashMap<String, ? super String>
Или как это было предложено @ user902383 непосредственно изменить (с таким же результатом), что в:
HashMap<String, String>
Теперь он будет принимать Strings.
класс Строка является окончательным (вы не можете простираться от него) - по этой причине лучше использовать HashMap<String, String>
Первый подход с HashMap<String, ? super String>
является «бесполезным», так как вы не в состоянии продлить от класса String.
'HashMap 'может быть заменен на' HashMap 'с тем же результатом, что и' String' является окончательным и не может быть расширено –
user902383
, теперь он работает! – rahstame
@ user902383 +1 Я только что обновил ответ. Спасибо;) – Sajmon