Значение по умолчанию HashMap вводит для K и V

Я обычно ввожу свои объявления карты, но делал некоторый maint и нашел один без ввода. Это получило меня взгляды (О нет!). Что значение по умолчанию вводит объявления Карты. Рассмотрите следующее:

Map map = new HashMap();
map.put("one", "1st");
map.put("two", new Integer(2));
map.put("three", "3rd");
for (Map.Entry entry : map.entrySet()) {
    System.out.println(entry.getKey() + " -> " + entry.getValue());
}

это ошибки с несовместимые типы на Карте. Запись. Таким образом, если я ввожу объявление с:

Map<Object, Object> map = new HashMap();

затем все работы хорошо. Таким образом, каков тип по умолчанию, о котором установлен в объявлении? Или я пропускаю что-то еще?

6
задан deHaar 3 August 2019 в 08:20
поделиться

3 ответа

Тип является java.lang. Объект.

Для конструкции берет тип Повторяемых и называет его метод итератора. Так как Набор не вводится с дженериками, объектами возвратов итератора текстового объекта. Они должны быть явно брошены для ввода Карты. Запись.

Map map = new HashMap();
map.put("one", "1st");
map.put("two", new Integer(2));
map.put("three", "3rd");
for (Object o : map.entrySet()) {
    Map.Entry entry = (Map.Entry) o;
    System.out.println(entry.getKey() + " -> " + entry.getValue());
}
4
ответ дан 8 December 2019 в 18:43
поделиться

Нет никакого типа по умолчанию.

Типы в дженериках Java только в течение времени компиляции, проверяя. Их стирают во времени выполнения и по существу уводят.

Думайте о дженериках как о статическом помощнике к a) лучше зарегистрировать Ваш код и b) включить некоторое ограниченное время компиляции, проверяя на безопасность типов.

8
ответ дан 8 December 2019 в 18:43
поделиться

HashMap является набором объектов, Думайте контейнеры C++. Каждый элемент карты является "блоком" для содержания данных.
Вы помещаете различные типы данных в блоках, hashmap должен знать, что они не являются всеми одинаковыми тип данных. Если бы только один тип данных был помещен в hashmap, то Вы получили бы предупреждение, но это скомпилировало бы.

1
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: