2013-09-24 10 views
6

To jest dziwny błąd, który dostaję dzisiaj, gdy próbuję wprowadzić mapę jak poniżej.Typ HashMap nie jest ogólny; nie można go sparametryzować za pomocą argumentów <String, Integer>

Map<String, Integer> cache = new HashMap<String, Integer>(); 

Używam JDK 1.7 i nie wiem, dlaczego ten błąd został przychodzi i zmienia powyższą linię dodając obsadę usuwa błąd. Spojrzałem na powiązane posty w stackoverflow przed opublikowaniem tego pytania wydaje się być dziwnym problemem.

Map<String, Integer> cache = (Map<String, Integer>) new HashMap(); 
+10

Czy jesteś pewien, że zarówno 'Map' jak i' HashMap' pochodzą z pakietu 'java.util' w twoim kodzie? –

+0

@Shane - Jaki jest błąd? Czy używasz dowolnego IDE, takiego jak Eclipse? –

+3

Czy deklarujesz własną nietypową klasę 'HashMap' w dowolnym miejscu? Proszę podać krótki, ale * kompletny * program demonstrujący problem. –

Odpowiedz

20

Sprawdź jesteś rzeczywiście przy java.util.HashMap i java.util.Map w swoim importu.

2

Jestem pewien, że importujesz niewłaściwy HashMap. Musisz użyć pakietów java.util dla kodu, który tam przedstawiłeś.

Nie możemy ci więcej pomóc, nie widząc twoich oświadczeń dotyczących importu.

-1

Zrobiłem coś naprawdę głupiego, aby uzyskać ten błąd. Możesz sprawdzić. Nazwałem moją klasę "HashMap" lol. Możesz to sprawdzić.

+0

lol samo tutaj hehe –

4

Mam również przeszedł samego błędu, ale został rozwiązany tylko poprzez zmianę niektórych właściwości projektu:

  • prawym przyciskiem myszy na projekcie
  • Kliknij na Properties
  • Wybierz Java Build Path od prawej -hand panel boczny
  • Wybierz Order and Export zakładka
  • Kliknij na własną JRE System Library or JDK Library
  • Kliknij Up przycisk i przenieść go na pierwszej pozycji
  • Kliknij Ok
  • Clean & budować swój projekt.

Powtórz to dla wszystkich pozostałych projektów zależnych, jeśli masz zależności.

Rozwiązało to mój problem, ponieważ wcześniej pliki Java pobierały inne biblioteki i pakiety nie pochodzące z pakietu JRE, ponieważ zostały ustawione w kolejności o najwyższym priorytecie.

+1

dzięki to pomógł mi dużo – user1

0

Jeśli żadne z powyższych rozwiązań nie działa, jedyną możliwą przyczyną otrzymania tego błędu jest to, że nazwałeś swoją nazwę klasy podobną do już istniejącej klasy, która jest w bibliotece util lub bibliotece języka.

Powiązane problemy