开发者

Eclipse Warning with Java HashMap

Eclipse is saying "HashMa开发者_如何学运维p is a raw type" When I use the following code

HashMap = new HashMap();

Any idea what could be wrong?


Eclipse will give you that warning when you use a non-Generic HashMap using Java 5 or newer.

See Also: The Generics Lesson in Sun's Java Tutorials.

Edit: Actually, here, I'll give an example too:

Say I want to map someone's name to their Person object:

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

These are checked at compile-time; the type information is lost at run-time due to how Java implements Generics.


Nothing wrong exactly, but you are missing out on the wonderful world of generics. Depending on what constraints you want to place on the types used in your map, you should add type parameters. For example:

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


That is missing generics, i.e. . If you don't know thise then set the eclipse compiler to java 1.4


Try

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

instead (obviously replacing the key type (String) and value type (Integer)).


That usually means you're mixing generic code with non-generic code.

But as your example wont even compile its rather hard to tell....


It's missing the generic type. You should specify the key-value generic pair for your map. For instance, the following is a declaration that instantiates a HashMap with String type key and Integer type value.

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


All of these are valid answers, you could also use the @SurpressWarnings annotation to get the same result, without having to resort to actual generics. ;)


hashmap is a raw type and hence should be parameterised ie what ever the data we get through the haspmap function their type must be declared for getting its functions

for example

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


With the latest Java, you do not have to explicitly mention the variable types in declaration. You can simply put:

 = new HashMap<>();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜