有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对象无法转换为条目<字符串,整数>

当我尝试循环hashmap时会出现这个错误,我不知道为什么

对象无法转换为条目

包装1:

protected static final Map<String, Integer> distanceLabels = new HashMap<>();

在程序包中,我有以下错误:

Map distanceLabels = package1.distanceLabels;
for (Map.Entry<String, Integer> entry : distanceLabels.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // ...
}

共 (2) 个答案

  1. # 1 楼答案

    试着像这样使用映射Map<String, Integer>

      Map<String, Integer> distanceLabels = package1.distanceLabels;
     for(Entry<String, Integer> entry : distanceLabels.entrySet()) {
       String key = entry.getKey();
       Object value = entry.getValue();
    
      }
    
  2. # 2 楼答案

    简单地替换这个:

    Map distanceLabels = package1.distanceLabels;
    

    用这个

    Map<String, Integer> distanceLabels = package1.distanceLabels;
    

    事实上,如果您没有为映射的声明指定任何参数化类型,编译器就无法知道entries参数化类型,这就是他提出错误的原因,因为您期望entries的特定类型

    你需要在这两个地方保持一致,这样你实际上有两种方法来修复它,你不能像上面那样在两者之间做一些事情:

    1. 您可以在上述两个地方明确指定参数化类型,这显然是最好的方法
    2. 你可以像以前一样(没有定义参数化类型)创建一个Map原始类型,并创建一个Map.Entry原始类型,但是你必须显式地将keyvalue转换成预期的类型