2015-04-02 72 views
2

我必須聲明如下這個兩分的ArrayLists:如何將實例對象的元素添加到數組列表?

ArrayList<Book> books=new ArrayList<Book>(); 
ArrayList<Painting> paintings=new ArrayList<Painting>(); 

其中圖書和繪畫是類。我想定義一個函數addToList這樣的:

public void addToList(Object myObject) 
    { 
     if(myObject instanceof Book) 
       books.add(myObject); 

     else if(myObject instanceof Painting) 
       paintings.add(myObject); 
    } 

但它顯示了一個錯誤,說 Add方法(繪畫)在ArrayList類型是不適用的參數(對象)

的方法在類型ArrayList中添加(Book)不適用於參數(對象)

有沒有辦法解決這個問題?爲什麼錯誤發生,因爲我把每個添加語句放在一個if else循環中,以確認適當類的對象應該添加到相應的數組列表中?

我可以通過將add函數分成兩個不同的add函數來完成這一點,其中一個作爲參數繪製myObject和其他書籍myObject,但我想在同一個函數中完成所有操作。可以做到嗎?

+0

您應該使用一個IDE。同樣對於未來的問題,你可以使用搜索功能,這個問題可能有很多重複.. – 2015-04-02 06:41:18

回答

2

由於您使用不允許你這樣做仿製藥,你需要將其強制轉換:

if(myObject instanceof Book) 
     books.add((Book)myObject); 

    else if(myObject instanceof Painting) 
     paintings.add((Painting)myObject); 
+0

謝謝! :) 有用。 – 2015-04-02 06:55:24

4

您需要首先投射對象paintings.add((Painting)myObject);,通用ArrayList<Painting>禁止您添加它,因爲它期望繼承類Painting,並拋出編譯器錯誤,因爲generell類Object不能滿足此條件

+0

太棒了!這工作。鑄造有什麼缺點或者開銷嗎? – 2015-04-02 06:52:49

相關問題