Предупреждение затмения с помощью Java HashMap - PullRequest
5 голосов
/ 28 июля 2010

Eclipse говорит: «HashMap - это необработанный тип», когда я использую следующий код

HashMap = new HashMap();

Есть идеи, что может быть не так?

Ответы [ 8 ]

17 голосов
/ 28 июля 2010

Eclipse выдаст вам это предупреждение, когда вы используете не Generic HashMap с использованием Java 5 или новее.

См. Также: Общий урок в руководствах Sun по Java.

Редактировать: Собственно, здесь я приведу также пример:

Скажем, я хочу сопоставить чье-то имя с его Person объектом:

Map<String, Person> map = new HashMap<String, Person>();
// The map.get method now returns a Person
// The map.put method now requires a String and a Person

Они проверяются во время компиляции; информация о типе теряется во время выполнения из-за того, как Java реализует Generics.

3 голосов
/ 28 июля 2010

Ничего неправильно точно, но вы упускаете прекрасный мир дженериков. В зависимости от того, какие ограничения вы хотите наложить на типы, используемые на вашей карте, вы должны добавить параметры типа. Например:

Map<String, Integer> map = new HashMap<String, Integer>();
1 голос
/ 28 июля 2010

Вместо этого попробуйте

HashMap<String,Integer> map = new HashMap<String,Integer>();

(очевидно, заменяя тип ключа (String) и тип значения (Integer)).

1 голос
/ 28 июля 2010

Это недостающие дженерики, т.е.Если вы этого не знаете, установите компилятор eclipse в java 1.4

0 голосов
/ 16 июля 2015

hashmap является необработанным типом и, следовательно, должен быть параметризован, т.е. что бы данные, которые мы получаем через функцию haspmap, их тип должен быть объявлен для получения его функций

, например

HashMap<String, Integer> map = new HashMap<String, Integer>();
0 голосов
/ 28 июля 2010

Все это правильные ответы, вы также можете использовать аннотацию @SurpressWarnings, чтобы получить тот же результат, не прибегая к реальным генерикам.;)

0 голосов
/ 28 июля 2010

Отсутствует общий тип. Вы должны указать общую пару ключ-значение для вашей карты. Например, ниже приводится объявление, которое создает экземпляр HashMap с ключом типа String и значением типа Integer.

Map<String, Integer> map = new HashMap<String, Integer>();
0 голосов
/ 28 июля 2010

Это обычно означает, что вы смешиваете общий код с неуниверсальным кодом.

Но в качестве вашего примера даже компилировать его довольно сложно, чтобы сказать ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...