繁体   English   中英

使用Java HashMap进行Eclipse警告

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM