使用Java HashMap进行Eclipse警告

时间:2010-07-28 14:02:58

标签: java eclipse generics hashmap

Eclipse说“HashMap是原始类型”当我使用以下代码时

HashMap = new HashMap();

知道可能出现什么问题吗?

8 个答案:

答案 0 :(得分:17)

当您使用非Generic HashMap使用Java 5或更高版本时,Eclipse会向您发出警告。

另请参阅:Sun的Java教程中的Generics Lesson

编辑:其实,在这里,我也举一个例子:

假设我想将某人的姓名映射到他们的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实现了泛型,因此在运行时丢失了类型信息。

答案 1 :(得分:3)

没有什么错误,但是你错过了精彩的仿制药世界。根据您要对地图中使用的类型设置的约束,您应该添加类型参数。例如:

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

答案 2 :(得分:1)

缺少泛型,即。如果你不知道这个,那么将eclipse编译器设置为java 1.4

答案 3 :(得分:1)

尝试

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

代替(显然替换了键类型(String)和值类型(Integer))。

答案 4 :(得分:0)

这通常意味着您将通用代码与非通用代码混合在一起。

但是,你的例子甚至不会编译它很难说......

答案 5 :(得分:0)

缺少通用类型。您应该为地图指定键值通用对。例如,以下是使用String类型键和Integer类型值实例化HashMap的声明。

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

答案 6 :(得分:0)

所有这些都是有效的答案,你也可以使用@SurpressWarnings注释来获得相同的结果,而不必诉诸实际的泛型。 ;)

答案 7 :(得分:0)

hashmap是一种原始类型,因此应进行参数化 无论我们通过haspmap函数得到什么数据,必须声明它们的类型以获取其函数

例如

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