2015-09-22 26 views
0

我想在我的列表中添加一個值。將值輸入到列表中時出現ClassCastException

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

但我得到了一個異常。

造成的:java.lang.ClassCastException:business.model.Book不能 太陽是 投地的java.util.List在 presentation.control.AuthorBean.createAuthor(AuthorBean.java:68)。 reflect.NativeMethodAccessorImpl.invoke0(本地方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

我想要知道,如何讓我的連接表列表類型和輸入類型相同?

+0

那麼錯誤消息說,當你期望一個列表時,你正在排列一本書。顯然,你的this.bookBean.retrieveBook(bookId [i])正在返回一本書而不是一張清單。改變這個功能。 – e4c5

+0

@ e4c5 thx評論,但我把(列表)在開始,所以我的功能可以返回列表,但它不能改變列表。正如我所說,我想知道如何改變我的輸入類型,以便它可以與我的連接表相同。 –

+0

你在說什麼?你不能只強制一種類型的對象變成完全不相關的東西,因爲你只需要使用一個演員'(名單)',你必須解決,然後才能得到任何地方 – e4c5

回答

0

您可以在輸入循環之前創建一個新列表。
在循環內檢索單本書並將添加到它到現有列表。
循環後,將該列表分配給作者。

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

非常感謝您的幫助,它適用於我!我真的真的很喜歡它^ 0 ^。 –

+0

不客氣!:)..... PS:與BalusC對原始問題的評論有關,我在我的回答中刪除了無關代碼部分。 – stg

相關問題