#java #hashmap #java-7
#java #hashmap #java-7
Вопрос:
У меня есть код, который хорошо работает на моей машине:
ArrayList<Posting> postings = invertedLists.get(key);
//---- Apply some changes on postings -----
invertedLists.replace(key, postings);
Когда мой друг клонирует код, он выдает ей эту ошибку:
The method replace(String, ArrayList<Posting>) is undefined for the type HashMap<String,ArrayList<Posting>>
Примечание: invertedLists — это HashMap<String,ArrayList<Posting>>
Мы проверили в моем проекте; я использую JavaSE-1.6, а она использует JavaSE-1.7.
Что может вызвать эту проблему?
Комментарии:
1. Пожалуйста, дайте короткую, но полную программу, демонстрирующую проблему. (Код компилируется для меня.)
2. Я подозреваю , что вы на самом деле используете Java 8, учитывая, что
replace
метод был введен тогда…
Ответ №1:
Map.replace
впервые был объявлен в Java 1.8 (см. «начиная с: 1.8» внизу). Вы должны компилироваться с использованием JDK 1.8 (даже если вы компилируете в режиме 1.6). Это можно сделать, например, в среде IDE: установить режим совместимости языков для одной версии, но скомпилировать для JDK другой версии. Я делал это случайно пару раз.
Ваш друг компилируется на «обычном» 1.7, в котором этот метод не объявлен.
Комментарии:
1. в eclipse: Project -> properties -> java compiler я вижу 1.6, где я должен проверить, использую ли я java 8?
2. Windows -> Настройки -> Java -> Компилятор : 1.4
3. нашел, может быть, это так: Windows -> Настройки -> Java -> Установленные JREs -> там есть java 8, проверил.
Ответ №2:
Ответ №3:
Метод, который вы ищете, это invertedLists.put(key, postings);
. РЕДАКТИРОВАТЬ: согласно документации Java, replace() не является частью API для HashMap .
Комментарии:
1. Это не объясняет, почему он не компилируется на другой машине.
2. Я полагаю, что вопрос был » Что может вызвать эту проблему? »
3. Согласно документации ( docs.oracle.com/javase/7/docs/api/java/util/HashMap.html ), replace не является методом HashMap в стандарте.
4. Все еще не совсем корректно.
replace()
действительно является частьюHashMap
API в Java 8.