获取ClassCastException

时间:2012-03-15 18:04:33

标签: java vector hashtable classcastexception

我将对象类型转换为bean类,这反过来又给了我一个异常ClassCastException,我没有得到这个问题。

 Hashtable listEvent = getEvents(label1.getText(), str);

  Enumeration events = listEvent.keys();
   while (events.hasMoreElements()) {
    String key = (String) events.nextElement();

    if (key.equals(label1.getText())) {

       Vector object = (Vector) listEvent.get(key);

       Enumeration hashtable = listEvent.keys();
        while (hashtable.hasMoreElements()) {
          String keys = (String) hashtable.nextElement();
           if (keys.equals(label1.getText())) {

  Vector data = (Vector) listEvent.get(keys);
       for (int i = 0; i < data.size(); i++) {
      EventsBean bean1 = (EventsBean) data.elementAt(i);

在运行用于类型转换为EventsBean的应用程序时出现错误。

1 个答案:

答案 0 :(得分:3)

首先,如果您使用泛型集合而不是原始类型(Map<String, List<EventsBean>>而不是Hashtable),则编译器会捕获这些错误。

忘掉Vector,Hashtable和Enumeration。自Java 1.2以来不应再使用它们。

最后,为什么要迭代哈希表键,而不是直接查找值?

而不是

Enumeration events = listEvent.keys();
while (events.hasMoreElements()) {
    String key = (String) events.nextElement();
    if (key.equals(label1.getText())) {
       Vector object = (Vector) listEvent.get(key);

只需使用

Vector object = (Vector) listEvent.get(label1.getText());

现在回答你的问题:如果你得到一个ClassCastException,这意味着存储在集合中的对象不是你想象的那样。检查填充集合的代码。 (并切换到通用的现代馆藏)