7

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

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

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

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

12 回答 12

28

检查您是否在import中实际使用了java.util.HashMapjava.util.Map

于 2013-09-24T14:51:20.900 回答
8

我也遇到了同样的错误,但只需更改项目的一些属性即可解决:

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

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

它解决了我的问题,因为以前 Java 文件不是从 JRE 包中选择其他库和包,因为它是按最后优先级排序的。

于 2016-06-22T11:45:54.380 回答
2

我确定您导入了错误的HashMap. 您必须将java.util包用于您在此处提供的代码。

如果没有看到您的导入语句,我们将无法为您提供任何进一步的帮助。

于 2013-09-24T15:01:01.953 回答
1

HashMap 类型不是通用的;它不能用参数 <String, Integer> 参数化

如果发生这种类型的错误,请先检查您的文件名和类名因为错误地将文件名保存为 HashMap.java 而不是尝试其他方法

于 2020-11-15T10:24:21.780 回答
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<>(); (最好的办法)

编译运行

于 2020-10-15T12:08:46.667 回答
0

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

于 2021-02-16T07:40:53.050 回答
0

Recently, I have met the same problem.Almost I have found all the answers, but I failed.
I had imported java.util.HashMap and java.util.Map or set the JRE System Library to the top.But in vain.

At last, I tried to change my Class name from HashMap to HashMapDemo. Now, I just want to tell you that your Class name may be one of the java.util.*, you should change your Class name.

于 2018-12-29T08:24:21.960 回答
0

使用java.util.Map.<String, Integer> cache = new HashMap<String, Integer>(); 和导入import java.util.*;

于 2022-01-17T04:57:48.923 回答
0

切勿命名或保持您的类名与 Java Util 中预定义的任何类相同。

例如:在 JavaHashMap中是预定义的类,如果创建一个具有相同名称的新类 ie HashMap,那么很明显会得到这样的错误。

于 2018-08-09T04:35:42.357 回答
0

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

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

当您尝试一种新的语言/库功能来调用与您正在尝试的类同名的类时,这是一个常见的错误,无论如何,这不仅对这个目的有用。

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

于 2018-12-29T11:27:42.880 回答
0

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

于 2016-08-23T20:27:14.457 回答
-1

我做了一些非常愚蠢的事情来得到这个错误。你可能会检查。我将我的课程命名为“HashMap”,哈哈。你可以检查一下。

于 2014-10-19T17:29:39.543 回答