java - 无法在 Java 中的 Iterable 实现中转换类型

标签 java types iterator iterable mismatch

我有错误:

 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);

谢谢

最佳答案

为了在 Deck 上增强 for 循环返回 Card对象,Deck应该实现 Iterable<Card> , 而不仅仅是 Iterable .

关于java - 无法在 Java 中的 Iterable 实现中转换类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213908/

相关文章:

java - 设置日期的日/月/年为默认,只关心时间

java - 二叉搜索树的迭代器不沿着树向下

c++ - 在 leveldb 的 c++ 示例中声明迭代器时出现段错误

java - 合并在 NodeList 上循环的 2 个 XML 文件

java - 当客户端断开连接时,服务器不会删除/断开套接字

java - LWJGL 程序停止工作(不更改代码)[ECLIPSE]

c# - 在 C# 中的 foreach 语句的每次迭代中是否调用返回集合的方法?

c# - 如何将对象转换为 Type?

sql - 从 JSON 列计算平均值

c - 当 c 是一个字符时使用 scanf ("%d", &c) 会发生什么?