HashMap类型不是通用的; 它不能使用参数进行参数化

当我尝试实现如下地图时,这是一个奇怪的错误。

Map cache = new HashMap(); 

我正在使用JDK 1.7并且不确定为什么会出现此错误并通过添加强制转换更改上述行会删除错误。 我在发布这个问题之前看了stackoverflow中的相关post似乎是一个奇怪的问题。

 Map cache = (Map) new HashMap(); 

检查您实际上是在导入中使用java.util.HashMapjava.util.Map

我也遇到了同样的错误,但只是通过改变项目的一些属性来解决它:

  • 右键单击您的项目
  • 单击“ Properties
  • 从右侧面板中选择Java Build Path
  • 选择Order and Export选项卡
  • 单击JRE System Library or JDK Library
  • 单击Up按钮并将其移至第一个位置
  • 单击Ok
  • 清理并构建您的项目。

如果您有依赖项,请对所有其他dependents项目重复此操作。

它解决了我的问题,因为之前Java文件正在挑选其他库和包而不是JRE包,因为它是按最后优先级设置的。

我确定你导入了错误的HashMap 。 您必须使用java.util包作为您在那里提供的代码。

如果没有看到您的导入声明,我们无法帮助您。

如果上述解决方案都不起作用,那么您获得此错误的唯一可能原因是您可能已将class_name命名为类似于util或lang库中已有的类。

@Neeraj Pandey,你说得对,并建议一个绝对正确的答案。

永远不要将您的类名命名或保持与Java Util中预定义的任何类相同。 例如:在Java中,HashMap是预定义的类,如果创建一个具有相同名称的新类,即HashMap,那么显而易见的是得到这样的错误。

所以避免犯这样的错误。

我做了一件非常愚蠢的事情来得到这个错误。 你可能会检查。 我把我的class级命名为“HashMap”大声笑。 你可能会检查一下。