类型不匹配:无法从元素类型Object转换为int

时间:2011-08-18 10:47:12

标签: java

我在ht.keySet()所说的行上收到以下错误:

  

类型不匹配:无法从元素类型Object转换为int

htLinkedHashMap

for (int key : ht.keySet())
{
    if(ht.get(key).size() == 0)
    {
         System.out.println("There is no errors in " + key) ;
    }
    else
    {
        System.out.println("ERROR: there are unexpected errors in " + key);
    }
}

4 个答案:

答案 0 :(得分:4)

您需要使用Java generics

ht声明为LinkedHashMap<Integer, Foo>,其中Foo是您希望ht.get()返回的任何数据类型。使用Map界面会更好:

LinkedHashMap<Integer, Foo> ht = new LinkedHashMap<Integer, Foo>();
// or preferably
Map<Integer, Foo> ht = new LinkedHashMap<Integer, Foo>();

答案 1 :(得分:0)

ht是LinkedHashMap,如果它只包含Integer,则应将其声明为LinkedHashMap<Integer,Object>

如果将其声明为LinkedHashMap<Integer,Object>,则会自动完成对int的取消装箱。

(*)如果将其声明为LinkedHashMap<Integer,[actual-object-type]>

则更好

答案 2 :(得分:0)

必须是:for (Integer key : ht.keySet())...

LinkedHashMap<K, V>其中K和V是对象,而不是原始(int,short ...)

答案 3 :(得分:-1)

使用Integer而不是int,它可能会起作用。 LinkedHashMap中的键必须是对象,而不是基本类型。