Здравствуйте, JazzzMaster, Вы писали:
JM>HashMap<String, ?> hash = new HashMap<String, Object>(); JM> ... JM>hash.put(classified.toString(), object);
JM>Eclipse ругается на строчку hash.put(...) JM>The method put(String, capture#4-of ?) in the type HashMap<String,capture#4-of ?> is not applicable for the arguments (String, Object) JM>Не могу понять, что ему надо..
А чего Вы ожидали?
Конструкция HashMap<String, ?> означает, что тип значения может быть абсолютно любой. Хоть Object, хоть String, хоть Date. На уровне переменной hash это никак не видно. Соответственно, компилятор не может позволить добавить в эту коллекцию ничего — он не может проконтролировать тип.
Для добавления предусмотрена конструкция HashMap<String, ? super Object> hash. Она означает, что тип значения — любой родитель Object. Т.е. если мы добавим сюда Object — ничего плохого не будет. И компилятор разрешит добавлять туда все наследники Object.