2014-10-06 3 views
1

У меня есть ошибка:Невозможно преобразовать тип в Iterable реализации в Java

Type mismatch: cannot convert from element type Object to Card 

со следующим кодом:

Deck Removal 
.... 
for (Card c : Removal) 
     d.removeCard(c); 

Это метод итератора в моем классе палубного:

@Override 
public Iterator<Card> iterator() 
{ 
    return deck.iterator(); 
} 

Основание для колоды - Vector<Card>. Мой итератор возвращает тип Card. Почему это говорит мне, что это Object в цикле for?

Я могу сделать следующее, а затем ошибка исчезнет, ​​но это довольно глупо, поскольку я уже должен возвращать Card s вместо Objects.

Deck Removal 
.... 
for (Object c : Removal) 
     d.removeCard((Card)c); 

Благодаря

+3

Использует ли Deck 'Iterable' или' Iterable '? – Eran

+0

Спасибо, хорошо поймать, исправлено –

+0

Отлично! В этом случае я напишу свой комментарий в качестве ответа. – Eran

ответ

3

Для того, чтобы улучшенный перебрать Deck, чтобы вернуть Card объекты, Deck должны реализовать Iterable<Card>, а не только Iterable.