Eclipse说“HashMap是原始类型”当我使用以下代码时
HashMap = new HashMap();
知道可能出现什么问题吗?
答案 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>();