【问题标题】:ClassCastException when inputing value to list向列表输入值时出现 ClassCastException
【发布时间】:2015-09-22 08:58:26
【问题描述】:

我想在我的列表中添加一个值。

    for (int i=0; i<bookId.length;i++) {
        this.author.setBookList((List<Book>) this.bookBean.retrieveBook(bookId[i]));
    }       

但我遇到了一个例外。

Caused by: java.lang.ClassCastException: business.model.Book 不能 转换为 java.util.List 在 Presentation.control.AuthorBean.createAuthor(AuthorBean.java:68) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

我想知道,如何让我的join table list type和input type一样?

【问题讨论】:

  • 嗯,错误消息说您正在分配一本书,而它需要一个列表。显然,您的 this.bookBean.retrieveBook(bookId[i]) 正在返回一本书而不是列表。更改该功能。
  • @e4c5 感谢评论,但我把 (List) 放在开头,所以我的功能可以作为列表返回,但不能更改为列表。正如我所说,我想知道如何更改我的输入类型,以便它可以与我的连接表相同。
  • 你在说什么?您不能仅通过使用强制转换“(List)”将一种类型的对象强制为完全不相关的对象,您必须先修复它才能到达任何地方
  • @e4c5 好的,我试试另一种获取列表的方法。谢谢你的建议。
  • 任何时候遇到java.lang.* 包的异常,都是基本的Java SE 问题,而不是一般的Java EE 问题。所以请不要用[java-ee] 等标记问题。我修复了错误的标签并从问题中删除了不相关的代码。

标签: java classcastexception


【解决方案1】:

您可以在进入循环之前创建一个新列表。
在循环中检索单本书并将其添加到现有列表中。
在循环之后,将列表分配给作者。

    // ...
    List<Book> list = new ArrayList<>();
    for (int i=0; i<bookId.length;i++) {
        list.add(this.bookBean.retrieveBook(bookId[i]));
    }       
    author.setBookList(list);        
    // ...

【讨论】:

  • 非常感谢您的帮助,它对我有用!!!我真的真的真的很欣赏它^0^。
  • 不客气!:) ..... PS:与BalusC对原始问题的评论有关,我也删除了答案中不相关的代码部分。
猜你喜欢
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 2017-09-15
  • 1970-01-01
相关资源
最近更新 更多