2015-05-14 20 views
-3

我有一個ArrayList,在那個ArrayList是類CD和DVD(Artigo的子類)的對象。我需要的是在ArrayList中顯示所有CD。 這裏是我的代碼:Java:ArrayList打印

public static void main(String[] args) { 

    ArrayList<Artigo> artigos = new ArrayList<Artigo>(); 

    for(CD i: artigos)       
    {             
     System.out.print(i); 
     System.out.print("\n--------------------\n"); 
    } 
} 

什麼是錯,我該如何解決? 感謝任何幫助。

+0

如果您添加CD到artigos名單? – Ajit

+2

你必須告訴我們,什麼是錯的!然後我們可以告訴你,如何解決它。那麼你希望發生什麼,實際上會發生什麼? – isnot2bad

+1

如果'CD'是'Artigo'的子類型,那麼'Artigo'中的每個元素都不一定是'CD'。所以使用'CD'變量遍歷它們是沒有意義的。 – khelwood

回答

1

打印對象

覆蓋Object.toStringArtigo對象。

這將允許您的List的元素被打印爲「人類可讀的」,而不是使用[email protected]的成語java.lang.Object

繼承

您正在使用快速枚舉迭代的參數化類型的子類爲您List,因爲類型不匹配的,將無法編譯。

您應該改用:

for(Artigo a: artigos) { 
    ... 
} 

如果你只想打印CD元素,你的循環中添加一個條件:

if (a instanceof CD) { 
    ... 
}