java - 获取 ClassCastException

标签 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 时遇到错误。

最佳答案

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

忘掉 vector 、哈希表和枚举吧。自 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,这意味着存储在集合中的对象不是你想象的那样。检查填充集合的代码。 (并切换到通用的现代集合)

关于java - 获取 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725541/

相关文章:

java - 在 Regex 与 Java 中匹配多个

c++ - 从 C++ vector 中提取引用

c++ - 使用 STL vector 连续分配对象

arrays - 数据结构的选择

java - 程序流程问题

java - 如何在 Eclipse 中创建子类?

c++ - 如何使用 STL 将数组转换为 vector

swift - 如何在 Swift 中实现双向映射?

algorithm - 如果基数尝试(或者说 HAT 尝试)非常适合存储和管理字符串,为什么它们不能同样用于整数?

java - 在 Tomcat : InvocationTargetException 上运行 Servlet 的问题