HashMap类型不是通用的;它不能用参数<string,integer =“”> </string,>进行参数化

时间:2013-09-24 14:50:06

标签: java

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

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

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

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

11 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:4)

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

  • 右键单击您的项目
  • 点击Properties
  • 从右侧面板
  • 中选择Java Build Path
  • 选择Order and Export标签
  • 点击JRE System Library or JDK Library
  • 点击Up按钮并将其移至第一个位置
  • 点击Ok
  • 清洁&amp;建立你的项目。

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

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

答案 2 :(得分:2)

我确定您输入了错误的HashMap。您必须使用java.util包来表示您在那里提供的代码。

我们无法在不查看您的导入声明的情况下为您提供帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

@Neeraj Pandey,您完全正确,并提出了绝对正确的答案。

请勿使用与Java Util中预定义的任何类相同的名称或名称。 例如:在Java中,HashMap是预定义的类,如果创建一个具有相同名称的新类,即HashMap,则显而易见会出现此类错误。

因此请避免犯此类错误。

答案 5 :(得分:0)

最近,我遇到了同样的问题。几乎找到了所有答案,但失败了。
我已导入 java.util.HashMap java.util.Map 或将 JRE系统库设置为顶部 >。但是徒劳。

最后,我尝试将我的班级名称从 HashMap 更改为 HashMapDemo 。现在,我只想告诉您,您的类名可能是java.util。*之一,您应该更改您的类名。

答案 6 :(得分:0)

如果您使用与其他班级相同的名称来命名班级,则始终可以执行以下操作:

Map<String, Integer> cache = new java.util.HashMap<String, Integer>();

尝试使用一种新的语言/库功能来以与您尝试使用的类相同的名称来调用该类时,这是一个常见的错误,无论如何这不仅对实现此目的有用。

例如,有多个类名 Date ,例如 Java.sql.Date java.util.Date ,在这种情况下,如果您需要同时引用两者,了解这一点很有用。

答案 7 :(得分:0)

尝试一下:

  1. 创建一个新类,并在同一程序包中给另一个唯一的名称

  2. 导入-import java.util.*;import java.util.HashMap;

  3. 将HashMap创建为:

HashMap<Integer,String> map=new HashMap<Integer,String>();(旧的冗长方式)

HashMap<String, Integer> map = new HashMap<>(); (更好的方式)

Map<String, Integer> map = new HashMap<>(); (最佳方法)

编译并运行

答案 8 :(得分:0)

HashMap类型不是通用的;不能使用参数

对其进行参数化

如果发生此类错误,请先检查您的文件名和类名 误将您保存为文件名,将其保存为HashMap.java 比尝试其他方式

答案 9 :(得分:0)

当您编译到的 Java 版本低于您的 JDK 时,就会发生这种情况。确保 Eclipse 所称的“编译器合规级别”足够高。这发生在我身上。当我的 JDK 是 Java 7 时,问题发生在 Eclipse 中,但编译器合规性级别为 1.4。在我的 Eclipse 上,此设置位于 Project->Properties->Java Compiler。我将编译器合规性级别提高到 6.0,问题就消失了。

答案 10 :(得分:-1)

我做了一件非常愚蠢的事情来解决这个错误。你可能会检查。我将我的课程命名为#34; HashMap&#34;大声笑。你可能会检查一下。