【问题标题】:Java Hashtable linked listJava Hashtable 链表
【发布时间】:2019-05-02 03:38:01
【问题描述】:

您好,由于某种原因,我有以下代码引发类型错误:Expected String, Actual Object。它是一个带有string 键和linkedlist<string> 值的哈希表。

在遍历这些linkedlist 时,我无法将它们的值设置为string 变量。我已经习惯了 getClass() 方法来确保它返回一个 string 类。我很困惑,任何帮助将不胜感激。

Enumeration t = Scope.keys();
String temp_string;
String temp_string2;
LinkedList temp_linkedlist;
while (t.hasMoreElements())
{
    temp_string = (String)t.nextElement();
    temp_linkedlist = (LinkedList)Scope.get(temp_string);
    for(int num=0; num<temp_linkedlist.size(); num++)
    {
        //Prints out string from linked list  
        System.out.println(temp_linkedlist.get(num).getClass());
        //throws error 
        temp_string2 = temp_linkedlist.get(num);
    }
}

【问题讨论】:

  • 能否发布错误的完整 statck 跟踪并在代码中指定出现此错误的行?
  • 除了缺少演员表,出于性能原因,您不应在链接列表上调用 size()get(num)。最好对其进行迭代。

标签: java types linked-list hashtable


【解决方案1】:

当不使用泛型时,列表中的所有元素都会被编译器视为Object

要使您的代码正常工作,同时不考虑泛型,请尝试以下操作:

temp_string2 = (String)temp_linkedlist.get(num);

getClass() 给你一个字符串的原因是因为它是在运行时评估的,而不是编译时。

【讨论】:

  • 感谢您的回答,我将如何使用泛型?
猜你喜欢
  • 2014-04-20
  • 2013-11-26
  • 2010-11-15
  • 2012-07-27
  • 2011-01-04
  • 2016-09-02
  • 2011-06-05
  • 2015-12-20
  • 1970-01-01
相关资源
最近更新 更多