Java HashMap的Eclipse警告

ttp71kqs  于 2022-11-04  发布在  Eclipse
关注(0)|答案(9)|浏览(214)

当我使用下面的代码时,Eclipse说“HashMap是一个原始类型

HashMap = new HashMap();

知道哪里出了问题吗?

ndasle7k

ndasle7k1#

当您使用Java 5或更高版本的非GenericHashMap时,Eclipse将给予该警告。
另请参阅:Sun的Java教程中的Generics Lesson
编辑:其实,在这里,我也会给予一个例子:
假设我想将某人的名字Map到他们的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实现泛型的方式,类型信息会在运行时丢失。

k2fxgqgv

k2fxgqgv2#

没有什么不对的,但是你错过了泛型的美妙世界。根据你想在你的map中使用的类型上放置什么约束,你应该添加类型参数。例如:

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

nfeuvbwi3#

如果你不知道这一点,那么就把eclipse编译器设置为java 1.4

crcmnpdw

crcmnpdw4#

尝试

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

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

zhte4eai

zhte4eai5#

这通常意味着您将泛型代码与非泛型代码混合在一起。
但是,由于您的示例甚至不会编译,因此很难说......

cu6pst1q

cu6pst1q6#

它缺少泛型类型。您应该为Map指定键-值泛型对。例如,下面是一个声明,它示例化了一个带有String类型key和Integer类型value的HashMap

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

iqih9akk7#

所有这些都是有效的答案,您也可以使用@SurpressWarnings注解来获得相同的结果,而不必求助于实际的泛型。)

vbopmzt1

vbopmzt18#

hashmap是一个原始类型,因此应该参数化,即无论我们通过haspmap函数获得什么数据,都必须声明它们的类型以获取其函数
例如,

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

xxhby3vn9#

在最新的Java中,您不必在声明中明确提及变量类型。您可以简单地输入:

= new HashMap<>();

相关问题