2015-05-14 6 views
-3

У меня есть ArrayList, и в этом ArrayList есть объекты класса CD и DVD (подклассы Artigo). Мне нужно показать все компакт-диски в ArrayList. Вот мой код:Java: ArrayList print

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

Где вы добавляете диск в artigos список? – Ajit

+2

Вы должны сказать нам, что случилось! Тогда мы можем сказать вам, как это исправить. Итак, что вы ожидаете, и что происходит на самом деле? – isnot2bad

+1

Если 'CD' является подтипом' Artigo', то каждый элемент 'Artigo' не обязательно является' CD'. Поэтому нет смысла использовать переменную 'CD' для итерации через них. – khelwood

ответ

1

для печати объектов

Override Object.toString в ваших Artigo объектов.

Это позволит напечатать элементы вашего List «для человека», вместо использования [email protected] идиомы java.lang.Object.

Наследование

Вы используете быстро-перечисление для перебора дочерних классов вашего параметризованном типа для вашего List, который не будет компилироваться из-за несоответствия типа.

Вы должны вместо этого использовать:

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

Если вы хотите напечатать CD элементы, добавить условие в вашем цикле:

if (a instanceof CD) { 
    ... 
}