2014-04-16 2 views

ответ

3

Так проблема связана в логике групповых символов. Подстановочный знак означает, что параметр типа значения может быть любым, поэтому 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.

+2

'HashMap 'может быть заменен на' HashMap 'с тем же результатом, что и' String' является окончательным и не может быть расширено – user902383

+0

, теперь он работает! – rahstame

+0

@ user902383 +1 Я только что обновил ответ. Спасибо;) – Sajmon

-1

Вы можете попробовать ToString реализованный в типе "количество".

Иначе говоря, количество + «»

+0

Проблема заключается в том, что 'String' не типа'? '. Это не имеет никакого отношения к 'количеству', не являющемуся' String'. –

0

Проблема в том, что вы используете подстановочный знак «?». Это в основном неизвестный тип. Вероятно, вы должны использовать тип String, или Object, если вам нужен более общий тип. Как так:

ArrayList<HashMap<String, String>>

Вы можете прочитать об этом здесь: http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html и здесь: http://docs.oracle.com/javase/tutorial/extra/generics/morefun.html

Надеется, что это помогает.

Удача

0

это код;

ArrayList<HashMap<String,String>> hashArray=new 
hashArray.get(index).remove("key"); 
hashArray.get(index).put("key","value"); 

нормально

Смежные вопросы