首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取ClassCastException

获取ClassCastException
EN

Stack Overflow用户
提问于 2012-03-16 02:04:33
回答 1查看 323关注 0票数 0

我将对象类型转换为bean类,这反过来会给我一个异常ClassCastException,我不明白这背后的问题。

代码语言:javascript
复制
 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时,我得到一个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-16 02:11:40

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

忘记Vector、Hashtable和Enumeration。从Java 1.2开始,就不应该再使用它们了。

最后,为什么要对哈希表的键进行迭代,而不是查找值directy?

而不是

代码语言:javascript
复制
Enumeration events = listEvent.keys();
while (events.hasMoreElements()) {
    String key = (String) events.nextElement();
    if (key.equals(label1.getText())) {
       Vector object = (Vector) listEvent.get(key);

只需使用

代码语言:javascript
复制
Vector object = (Vector) listEvent.get(label1.getText());

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9725541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档