java - 类型不匹配,无法从元素对象转换为字符串

标签 java string object mismatch

我从这个网站上复制了这段代码:https://www.w3schools.com/java/showjava.asp?filename=demo_hashmap_loop_key

但它仍然给出如上所述的错误:'for (String i : CapitalCities.keySet())!'

有人知道如何纠正这个错误吗?


import java.util.HashMap;

public class MyClass {
  public static void main(String[] args) {
    HashMap capitalCities = new HashMap();
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");

    for (String i : capitalCities.keySet()) {
      System.out.println(i);
    }
  }
}

最佳答案

您的程序将抛出以下编译错误。

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from element type Object to String

根据您的代码,capitalCities.keySet()将返回泛型类型的 Set。因此,为了返回字符串集,我们可以使用以下解决方案之一。

解决方案1:for (Object i : capitalCities.keySet())将“i”的数据类型更改为通用对象。

解决方案 2:HashMap<String, String> capitalCities = new HashMap<String, String>();我们可以将映射的键和值的数据类型定义为字符串。

注意:为了代码可读性,建议使用“解决方案2”。

关于java - 类型不匹配,无法从元素对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58429793/

相关文章:

java - JLayeredPane 图像未显示

java - 使用资源构建java库

android - 在 Android Studio 中评估字符串

java - 如何使用Java将数据从一个ArrayList添加到另一个ArrayList?

object - 如何判断对象是否是 AWS S3 上的文件夹

php - Laravel Blade 显示大括号

java - 无法使用 iText Java 重命名 PDF 中的表单字段

java:查找程序名称,解析整数参数

string - 如何在 Haskell 中检查字符串的每个字符

javascript - 用动态空白比较两个字符串的最快方法?