当我使用下面的代码时,Eclipse说“HashMap是一个原始类型
HashMap = new HashMap();
知道哪里出了问题吗?
ndasle7k1#
当您使用Java 5或更高版本的非GenericHashMap时,Eclipse将给予该警告。另请参阅:Sun的Java教程中的Generics Lesson。编辑:其实,在这里,我也会给予一个例子:假设我想将某人的名字Map到他们的Person对象:
HashMap
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实现泛型的方式,类型信息会在运行时丢失。
k2fxgqgv2#
没有什么不对的,但是你错过了泛型的美妙世界。根据你想在你的map中使用的类型上放置什么约束,你应该添加类型参数。例如:
Map<String, Integer> map = new HashMap<String, Integer>();
nfeuvbwi3#
如果你不知道这一点,那么就把eclipse编译器设置为java 1.4
crcmnpdw4#
尝试
HashMap<String,Integer> map = new HashMap<String,Integer>();
(显然替换了键类型(String)和值类型(Integer))。
zhte4eai5#
这通常意味着您将泛型代码与非泛型代码混合在一起。但是,由于您的示例甚至不会编译,因此很难说......
cu6pst1q6#
它缺少泛型类型。您应该为Map指定键-值泛型对。例如,下面是一个声明,它示例化了一个带有String类型key和Integer类型value的HashMap。
iqih9akk7#
所有这些都是有效的答案,您也可以使用@SurpressWarnings注解来获得相同的结果,而不必求助于实际的泛型。)
vbopmzt18#
hashmap是一个原始类型,因此应该参数化,即无论我们通过haspmap函数获得什么数据,都必须声明它们的类型以获取其函数例如,
HashMap<String, Integer> map = new HashMap<String, Integer>();
xxhby3vn9#
在最新的Java中,您不必在声明中明确提及变量类型。您可以简单地输入:
= new HashMap<>();
9条答案
按热度按时间ndasle7k1#
当您使用Java 5或更高版本的非Generic
HashMap
时,Eclipse将给予该警告。另请参阅:Sun的Java教程中的Generics Lesson。
编辑:其实,在这里,我也会给予一个例子:
假设我想将某人的名字Map到他们的
Person
对象:在编译时检查这些参数;由于Java实现泛型的方式,类型信息会在运行时丢失。
k2fxgqgv2#
没有什么不对的,但是你错过了泛型的美妙世界。根据你想在你的map中使用的类型上放置什么约束,你应该添加类型参数。例如:
nfeuvbwi3#
如果你不知道这一点,那么就把eclipse编译器设置为java 1.4
crcmnpdw4#
尝试
(显然替换了键类型(String)和值类型(Integer))。
zhte4eai5#
这通常意味着您将泛型代码与非泛型代码混合在一起。
但是,由于您的示例甚至不会编译,因此很难说......
cu6pst1q6#
它缺少泛型类型。您应该为Map指定键-值泛型对。例如,下面是一个声明,它示例化了一个带有String类型key和Integer类型value的
HashMap
。iqih9akk7#
所有这些都是有效的答案,您也可以使用@SurpressWarnings注解来获得相同的结果,而不必求助于实际的泛型。)
vbopmzt18#
hashmap是一个原始类型,因此应该参数化,即无论我们通过haspmap函数获得什么数据,都必须声明它们的类型以获取其函数
例如,
xxhby3vn9#
在最新的Java中,您不必在声明中明确提及变量类型。您可以简单地输入: