Java 如何与继承一起使用iterable

Java 如何与继承一起使用iterable,java,inheritance,iterator,wildcard,iterable,Java,Inheritance,Iterator,Wildcard,Iterable,我有两个名为Cards和ActionCard的类,分别实现ICard和ICard,它们包含在两个不同的模块中-模块A包含Cards和ActionCard类,并且取决于模块B,其中包含ICard和ICard接口 我试图迭代模块a中包含ActionCard列表的Cards类,并迭代模块B中的ICards接口 我试图用方法Iterator Iterator()将Cards类定义为Iterable,但由于ActionCard在模块B中未知,我想将ICards定义为Iterable,这意味着方法Itera

我有两个名为
Cards
ActionCard
的类,分别实现
ICard
ICard
,它们包含在两个不同的模块中-模块
A
包含
Cards
ActionCard
类,并且取决于模块
B
,其中包含
ICard
ICard
接口

我试图迭代模块
a
中包含
ActionCard
列表的
Cards
类,并迭代模块
B
中的
ICards
接口

我试图用方法
Iterator Iterator()
Cards
类定义为
Iterable
,但由于
ActionCard
在模块
B
中未知,我想将
ICards
定义为
Iterable
,这意味着方法
Iterator()
卡中的
无法返回
迭代器
,因为它与
迭代器
的类型完全不同(我不想在模块
a
中更改为
ICard
,因为我需要使用
操作卡

我尝试使用通配符来定义
Iterable如何:

public interface ICards<T> extends Iterable<T> {
  // ..some methods
}
公共接口ICards扩展了Iterable{
//…一些方法
}

公共类卡实现iCard{
私有列表m_卡=新的ArrayList();
@凌驾
公共迭代器迭代器()
{        
返回m_Cards.iterator();
}
}
由于您的
Cards
类总是创建
ActionCard
列表
,并迭代该
列表
,因此定义它以实现
iCard
是有意义的


由于
Cards
实现了
ICards
,它扩展了
Iterable
,您不必明确声明
Cards
实现了
Iterable

,我不明白您为什么要为ArrayList创建
Cards
包装器。为什么不直接使用
ArrayList
ArrayList呢?可能还不清楚,但是Cards有很多与我的问题无关的方法和成员,因此它是一个类。但它仍然只是包装了ArrayList的功能。也许让
卡扩展ArrayList会更容易首先,谢谢,它很有效。第二,因为我想迭代实现ICard的对象集合,所以我使用了约束并将其定义为:
public interface ICards extensed Iterable{/..some methods}
public interface ICards<T> extends Iterable<T> {
  // ..some methods
}
public class Cards implements ICards<ActionCard> {

    private List<ActionCard> m_Cards = new ArrayList<>();

    @Override
    public Iterator<ActionCard> iterator()
    {        
        return m_Cards.iterator();
    }
}