[英]Eclipse Warning with Java HashMap
当我使用以下代码时,Eclipse会说“HashMap是原始类型”
HashMap = new HashMap();
知道什么可能是错的吗?
当您使用Java 5或更高版本的非Generic HashMap
时,Eclipse会向您发出警告。
另请参阅: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实现了泛型,因此在运行时丢失了类型信息。
没有什么错误 ,但你错过了精彩的仿制药世界。 根据您要对地图中使用的类型设置的约束,您应该添加类型参数。 例如:
Map<String, Integer> map = new HashMap<String, Integer>();
这是遗漏的泛型,即。 如果你不知道这个,那么将eclipse编译器设置为java 1.4
尝试
HashMap<String,Integer> map = new HashMap<String,Integer>();
相反(显然替换了键类型(String)和值类型(Integer))。
hashmap是一个原始类型,因此应该参数化,即我们通过haspmap函数得到的数据必须声明它们的类型才能获得它的函数
例如
HashMap<String, Integer> map = new HashMap<String, Integer>();
这通常意味着您将通用代码与非通用代码混合在一起。
但是,你的例子甚至不会编译它很难说....
它缺少通用类型。 您应该为地图指定键值通用对。 例如,以下是使用String类型键和Integer类型值实例化HashMap
的声明。
Map<String, Integer> map = new HashMap<String, Integer>();
所有这些都是有效的答案,你也可以使用@SurpressWarnings注释来获得相同的结果,而不必诉诸实际的泛型。 ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.